【问题标题】:RouteDebug from NuGet does not have a strong nameNuGet 的 RouteDebug 没有强名称
【发布时间】:2011-03-25 12:31:45
【问题描述】:

今天我在我的 ASP.NET MVC 3 应用程序(使用 Visual Studio 2010)中遇到了一些路由问题。

所以我想我安装了ASP.NET RouteDebugger 并解决了我的路线问题。

通过NuGet 获得包后,我的项目不再构建:

referenced assembly ' RouteDebug' does not have a strong name

我可以下载 RouteDebugger 的源代码并自己构建(并强烈签名)它,但这不是 NuGet 的目的不是'它;)

还有其他人遇到过这个问题并且可能已经解决了吗?

【问题讨论】:

    标签: asp.net asp.net-mvc visual-studio-2010 asp.net-mvc-3 asp.net-mvc-routing


    【解决方案1】:

    嗯,这个问题与 NuGet 并没有真正的关系。您不能从已签名的程序集中引用未签名的程序集。由于 NuGet 包中包含的 RouteDebug.dll 没有经过强签名,如果您的应用程序经过强签名,您将无法使用它。所以你基本上有两种选择:

    1. 下载RouteDebug的源代码,通过强密钥签名自行编译
    2. 从您的托管应用程序中删除强密钥签名。

    【讨论】:

    • Tnx 为您解答达林。我知道我的项目是强签名的,而 routedebugger 不是。但是我项目中的其他 NuGet 包工作正常,完全没有构建问题。所以我真的不明白为什么这个包没有强签名。
    • @Andrew Flierman,因为这是包的作者决定的。因此,您可以尝试联系他并建议更改此设置。我不知道如何提供进一步的帮助。
    • 我联系了包的作者,也许他可以进一步帮助我。 Tnx 为您提供帮助!
    • @Andrew Flierman,那么也许您可以通过接受答案来结束这个问题?
    【解决方案2】:

    无需使用源代码即可对已编译的程序集进行签名。此处对此进行了解释:http://www.geekzilla.co.uk/ViewCE64BEF3-51A6-4F1C-90C9-6A76B015C9FB.htm。总之,你需要使用ildasm获取程序集的IL,然后使用ilasm重新生成dll,这次签名:

    ildasm SomeAssembly.dll /out:SomeAssembly.il
    ren SomeAssembly.dll SomeAssembly.dll.orig (for backup purposes)
    ilasm SomeAssembly.il /dll /key= keyPair.snk
    

    但是,是的,在带有签名程序集的项目中使用未签名的 NuGet 包是一件很痛苦的事情......

    【讨论】:

      【解决方案3】:

      正如 here 所讨论的,这是 nuget 公认的缺点。

      【讨论】:

        【解决方案4】:

        这是一个常见问题,因为许多 nuget 包没有强命名。可以通过在构建时动态地为任何包含的 nuget 包提供强名称来解决此问题。将 nuget 添加包“Brutal.Dev.StrongNameSigner”包含到您的项目中。 然后在你的 .csproj 文件中,添加一个引用:

        <Target Name="BeforeBuild">
          <Exec ContinueOnError="false"
                Command="&quot;..\packages\Brutal.Dev.StrongNameSigner.1.8.0\tools\StrongNameSigner.Console.exe&quot; -in &quot;..\packages&quot;" />
        </Target>
        

        然后在编译时,您的未签名 nuget 引用将生成一个签名,并且您的程序集引用将更新以匹配新生成的签名。

        nuget:https://www.nuget.org/packages/Brutal.Dev.StrongNameSigner/

        项目:https://github.com/brutaldev/StrongNameSigner

        【讨论】:

          猜你喜欢
          • 2015-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多