Msbuild 使用snk密钥签名时生成错误

Msbuild 使用snk密钥签名时生成错误,msbuild,teamcity,visual-studio-2015,snk,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\Co

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

[团队城市中的错误]

CSC错误CS7027:使用文件“CompanyName.snk”中的公钥对输出进行签名时出错-进程无法访问文件“C:\BuildAgents\Gamma\temp\buildTmp\tmpD91D.tmp”,因为它正被另一个进程使用。
尝试清理生成使用的临时文件夹。 当临时文件夹有很多文件时,我看到了不同类型的问题

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


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

当我将Resharper缓存移动到系统温度时,它就开始了。当我将它移回解决方案文件夹时,问题消失了,我可以重新构建。

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

转到工具>选项 从选项对话框中,选择项目和解决方案>生成并运行 将并行项目生成的最大数量设置为1 +感谢@stukselbax让我走上正轨

我知道有一段时间没有人问我这个问题了,但由于我使用SO作为自己的参考,我也遇到了这个问题,我想分享我的解决方案

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

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

这可能是使用Roslyn编译器的一个实例。解决办法是增加

<UseSharedCompilation>False</UseSharedCompilation>

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

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

这看起来像是多核生成的问题。您是否尝试使用不带/m开关的MSBuild的单个实例构建解决方案?您是否已尝试诊断MSBuild的详细输出日志?您是否尝试确定哪个进程拥有临时文件?我在上周开始在Jenkins build服务器上看到这个问题!我在建筑时使用4芯/m:4。这似乎是随机发生的,每次都有不同的项目。我从未在本地遇到过错误。仅从生成服务器。在我们的生成服务器中突然发现了这一点,结果是Windows Defender在2020年7月的最新更新,请参阅我的评论。代理的临时文件夹中的文件数量有限。这是你指的临时文件夹吗?就是这个。运行生成C:\Users\USERNAME\AppData\Local\temp的用户的临时文件夹包含的文件超过65535个。请尝试一下,现在我刚刚删除了项目上的签名。还将其作为一种解决方法解决:-