什么是.exe~扩展名?

时间:2016-09-17 18:17:26

标签: go bazaar

我注意到go build现在正在创建.exe.exe~

我用Google搜索并没有发现任何内容,这只是在其中一个集市库被用作对我正在使用的软件包的依赖之后才开始发生的。

我需要.exe~吗?我可以删除它吗?

1 个答案:

答案 0 :(得分:4)

根据我在Windows上使用Go的经验,go build命令将创建一个.exe~影子文件,因为:

  1. 您之前构建了运行时并创建了一个.exe。
  2. 您已经开始/执行了二进制文件。
  3. 之前的执行仍然在运行或发生了一些其他愚蠢的文件锁定。
  4. 您再次尝试go build,而之前的二进制文件仍在使用中。
  5. 引擎盖下发生的事情是go build会将现有的执行.exe重命名为.exe~,并将新的二进制文件放在.exe中以供下次执行。

    我一直着迷于它如何对正在使用的文件,当20多年的所有其他Windows应用程序返回可怕的"文件在使用"错误。

    我最好的猜测是,当你执行go二进制文件时,执行不会在文件上放置文件锁。因此,下一个构建可以简单地重命名使用中的一个。

    在我的测试中(2014年),新的.exe是最新版本,而.exe~是以前运行的版本。

    我做了很多测试,因为我的用例在重新编译时故意替换了现有的二进制文件。