9

自使用 Visual Studio 2015 以来发生构建错误。在 Visual Studio 2015 中构建时,这种情况很少发生。在 TeamCity 中构建时,这种情况经常发生。

[Visual Studio 2015 中的错误]

  • 从文件“CompanyName.snk”中提取公钥时出错:进程无法访问文件“C:\Users\UserName\AppData\Local\Temp\tmp2FF6.tmp”,因为它正被另一个进程使用。CompanyName.Project.DAL D:\Projecten\CompanyName\Repository\Source\Components\CompanyName.Project.DAL\vbc

http://i.stack.imgur.com/hKbbe.png

[TeamCity 中的错误]

  • CSC 错误 CS7027:使用文件“CompanyName.snk”中的公钥对输出进行签名时出错——该进程无法访问文件“C:\BuildAgents\Gamma\temp\buildTmp\tmpD91D.tmp”,因为它正被另一个进程使用。

http://i.stack.imgur.com/rbgHx.png

4

6 回答 6

11

我知道这个问题已经有一段时间了,但是当我使用 SO 作为自己的参考时,我也遇到了这个问题,我想分享我的解决方案。

.snk 文件用于签署项目。你可能需要做一个新的。

  • 右键单击您的项目,选择属性。
  • 点击签名。
  • 单击“签署程序集”旁边的复选框。
  • 在标有“选择强名称密钥文件”的下拉列表中,单击新建。
  • 根据您的需要填写对话框,特别注意密钥文件名。当您按确定时,这将生成一个新的 .snk 文件。
  • 保存项目并重建。
  • 这将在您的项目中使用新的 .snk 并解决错误。

希望这可以帮助。

于 2016-08-06T19:25:27.813 回答
4

尝试清理构建使用的临时文件夹。当临时文件夹有很多文件时,我看到了不同类型的问题。

一些工具正在使用 GetTempFileName,当 temp 有很多文件时它们会出错

如果GetTempFileName方法用于创建超过 65535 个文件而不删除以前的临时文件,它将引发 IOException。

于 2016-02-15T14:31:16.817 回答
2

这可能是Roslyn 编译器出现此问题的一个实例。解决方法是添加

<UseSharedCompilation>False</UseSharedCompilation>

<PropertyGroup>在 .csproj 文件中的任何节点下。

于 2016-09-22T00:34:28.330 回答
0

我只是有同样的问题。在 Visual Studio 2015 中,我使用以下步骤修复了它:

  1. 转到工具 > 选项
  2. 从“选项”对话框中,选择“项目和解决方案 > 构建并运行”
  3. 将“最大并行项目构建数”设置为 1

+1 到 @stukselbax 让我走上正轨 还从这个链接得到帮助

于 2016-06-27T17:06:42.390 回答
0

当我将 Resharper Cache 移动到 System Temp 时,它就开始了。当我将它移回解决方案文件夹时,问题就消失了,我可以再次构建。

于 2016-06-13T23:37:35.740 回答
0

我使用 '/m:1' 作为 msbuild 参数,并在 csproj 文件中将 'SignPublic' 属性设置为 true。

于 2019-07-24T17:53:47.647 回答