Golang - 在 Windows 上更改构建工作路径

Dmi*_*mun 11 windows antivirus build go

我正在使用 SublimeText3(GoSublime 插件)在 Windows 8 上测试简单的 Go 程序

go run -v example.go
Run Code Online (Sandbox Code Playgroud)

在运行之前,它正在..AppData\Local\Temp..目录中编译。我的防病毒程序认为它是病毒并阻止它:

fork/exec C:\Users\D24F7~1.KAP\AppData\Local\Temp\go-build333212398\command-line-arguments_obj\exe\example.exe: Access is denied.
Run Code Online (Sandbox Code Playgroud)

我无法禁用它,我的解决方案是更改编译它的文件夹。我怎样才能做到这一点?

dod*_*gio 12

环境GOTMPDIR变量可用于控制工作目录。这通常比修改系统范围的临时目录更好。GOTMPDIR在 go 1.10 中引入。

> go run -work .\example.go
WORK=C:\Users\MyUserName\AppData\Local\Temp\go-build1002945170
...
Run Code Online (Sandbox Code Playgroud)

在“系统属性”>“环境变量”窗口中永久修改或在 shell 中临时修改

# powershell
$env:GOTMPDIR = "C:\Users\MyUserName\MyGoBuilds"
Run Code Online (Sandbox Code Playgroud)

> go run -work .\example.go
WORK=C:\Users\MyUserName\MyGoBuilds\go-build1381354702
...
Run Code Online (Sandbox Code Playgroud)

然后您可以对该目录进行所需的防病毒或其他安全例外GOTMPDIR


huy*_*ygn -1

您可以直接使用go build(输出二进制文件位于当前目录)或go build -o /your/custom/path. 然后运行输出二进制文件。

  • 这不是一个解决方案,因为在 Windows Go 中会在临时文件夹 - _C:\Users\D24F7~1.KAP\AppData\Local\Temp\_ 中进行编译,然后才将其复制到 _/your/custom/path_ 中。所以仍然是**访问被拒绝**错误。 (3认同)