我们的应用程序的入口点程序集使用强名称密钥进行签名,因此.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 回答
看一下最新的NuGet source,它看起来好像有一个初始检查包目录中任何缺少的.nupkg文件,我假设您没有使用project.json文件,然后它尝试只恢复那些NuGet无法找到.nupkg文件的软件包 . 然而,这只是我阅读代码,理想情况下我需要调试它,看看它是如何工作的 .
要解决此问题,您可以查看使用StrongNamer NuGet package,它将在构建时强烈命名所有程序集,以便还原不再是一个问题 .