编译依赖github.com/Microsoft/go-winio的Go应用时遇导入错误,求排查
编译依赖go-winio时遇到"import stringer是程序而非可导入包"的原因及解决办法
错误原因
- go-winio v0.6.0版本存在代码缺陷:该版本的
tools.go文件错误地将golang.org/x/tools/cmd/stringer作为库包导入,但stringer本质是Go官方提供的代码生成工具(可执行程序),并非用于被其他包导入的库。 - 模块依赖未遵循规范:旧版本go-winio未按照Go工具类的使用逻辑,应该通过
//go:generate stringer指令调用工具,而非直接import。
解决办法
- 升级go-winio到最新稳定版本:执行以下命令更新依赖,新版本已修复该导入错误:
go get github.com/Microsoft/go-winio@latest - 临时修复(不推荐):若无法升级依赖,可手动修改
$GOPATH/pkg/mod/github.com/!microsoft/go-winio@v0.6.0/tools.go文件,删除导入golang.org/x/tools/cmd/stringer的代码行。注意:手动修改依赖包可能引发其他兼容性问题,优先选择升级方案。
内容的提问来源于stack exchange,提问作者yuchuankai
相关产品推荐
相关产品推荐

