【问题标题】:NuGet restore overwiting signed DLLsNuGet 恢复覆盖签名的 DLL
【发布时间】:2016-05-13 18:44:47
【问题描述】:

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    查看最新的NuGet source 在我看来,好像对包目录中是否存在任何丢失的 .nupkg 文件进行了初始检查,我假设您没有使用 project.json 文件,然后它会尝试仅还原那些找不到 .nupkg 文件的 NuGet 包。然而,这只是我在阅读代码,理想情况下我需要对其进行调试,看看它是否真的有效。

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

    【讨论】:

    • 包含.nupkg 文件修复了它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 2017-02-11
    • 2014-04-07
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多