2016-05-13 53 views
2

我们的应用程序的入口点程序集使用强名称密钥进行签名,因此.NET还需要对所有引用的程序集进行签名。对于那些发布未签名程序集的软件包,我们的解决方法是使用ildasm/ilasm手动签名,处理过程解释为here,并将强名称程序集签入git存储库。NuGet还原overwiting签署的DLL

在构建机器上,我们做了git pull以获得签名的DLL,然后.nuget\NuGet.exe restore App.sln恢复其余的软件包。 NuGet恢复没有覆盖文件夹下的已签署/签入的程序集文件,因此我们可以很好地构建解决方案。

直到最近我才注意到,这是不工作了,只有其中一个签名的DLL nuget restore覆盖与包附带的原始的未签名的程序集。我不明白为什么现在它的工作方式不同,以及为什么只有一个软件包发生这种情况。

  • NuGet restore如何决定何时覆盖某个包的现有DLL以及何时跳过它?
  • 使用未签名的包时,有没有更好的方法来解决这个强烈的命名要求?

NuGet.exe版本是3.4.3。

谢谢!

回答

2

看着最新的NuGet source它看起来好像有一个初始检查包目录中的任何缺少的.nupkg文件,我假设你没有使用project.json文件,然后它试图只恢复那些无法找到.nupkg文件的NuGet软件包。然而,这只是我阅读代码,理想情况下我需要调试它,看看它是如何真正起作用的。

要解决此问题,您可以查看使用StrongNamer NuGet package这将强制在构建时命名所有程序集,因此还原将不再是一个问题。

+0

包括'.nupkg'文件修复了它。谢谢! – orad