NuGet恢复覆盖已签名的DLL

时间:2016-05-13 18:44:47

标签: msbuild nuget nuget-package nuget-package-restore

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

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

直到最近我才注意到它不再起作用,只有一个已签名的DLL nuget restore用包附带的原始无符号程序集覆盖它。我无法理解为什么现在这种情况有所不同以及为什么它只发生在其中一个软件包中。

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

NuGet.exe版本是3.4.3。

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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