使用PowerShell运行Go编译exe出现无关旧项目输出的问题
Go build生成exe输出旧内容的解决方法
我最近开始尝试使用Go语言,在Windows 11系统的VS Code中编写了如下代码:
package main import ( "fmt" ) func main() { fmt.Println("This now works.") }
这段代码在VS Code内运行正常,通过PowerShell执行go run main.go也能输出预期内容:
C:\Users\stuff\Documents\code\go\trial> go run main.go This now works.
但用go build main.go生成exe文件后,运行main.exe却输出了之前已删除的另一个Go项目内容:
C:\Users\stuff\Documents\code\go\trial> go build main.go C:\Users\stuff\Documents\code\go\trial> main.exe 153 10.1 Hello world. true
我在初始化当前模块前已删除旧项目及其文件夹,以下是解决方法:
- 检查当前目录的旧exe文件:执行
Get-ChildItem main.exe查看文件修改时间,若为旧文件直接删除后重新构建。 - 清理Go构建缓存:执行
go clean -cache,彻底清除Go的缓存构建产物,避免复用旧数据。 - 构建时指定新输出文件名:比如执行
go build -output myapp.exe main.go,运行myapp.exe验证输出是否正确,避免和旧同名文件混淆。 - 检查PowerShell别名冲突:执行
Get-Alias main,若存在指向旧程序的别名,执行Remove-Item alias:main删除。 - 运行exe时使用相对路径:Windows下直接输入
main.exe可能调用PATH中其他目录的同名程序,改用.\main.exe运行当前目录的产物。
内容的提问来源于stack exchange,提问作者PileOfMeatballs
相关产品推荐
相关产品推荐

