使用snk密钥签名时构建错误

时间:2015-10-06 13:45:46

标签: msbuild teamcity visual-studio-2015 snk

自使用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

5 个答案:

答案 0 :(得分:6)

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

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

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

希望这有帮助。

答案 1 :(得分:4)

尝试清理构建使用的临时文件夹。 当temp文件夹包含大量文件时,我看到了不同类型的问题。

有些工具使用GetTempFileName,当temp有大量文件时会出现错误

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

答案 2 :(得分:1)

这可能是Roslyn编译器的this issue实例。解决方法是添加

<UseSharedCompilation>False</UseSharedCompilation>

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

  1. 转到工具&gt;选项
  2. 从“选项”对话框中,选择“项目和解决方案&gt;构建并运行”
  3. 将“最大并行项目构建数”设置为1
  4. +1给@stukselbax让我走上正轨 Also got help from this link