NuGet恢复正在等待签名的DLL



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

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

直到最近,我才注意到这已经不起作用了,而且只适用于其中一个已签名的DLL nuget restore用包附带的原始未签名程序集覆盖它。我不明白为什么现在这种情况会有所不同,为什么只有一个包会发生这种情况。

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

NuGet.exe版本为3.4.3。

谢谢!

查看最新的NuGet源代码,在我看来,似乎对packages目录中丢失的.nupkg文件进行了初步检查,我假设您没有使用project.json文件,然后它试图只还原那些找不到.nupkg文件的NuGet包。然而,这只是我在阅读代码,理想情况下,我需要调试它,看看它是否真的是这样工作的。

要解决此问题,您可以考虑使用StrongNamer NuGet包,该包将在生成时对所有程序集进行强命名,这样恢复就不再是问题。

最新更新