首页 文章

NuGet恢复覆盖已签名的DLL

提问于
浏览
2

我们的应用程序的入口点程序集使用强名称密钥进行签名,因此.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 回答

  • 2

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

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

相关问题