【问题标题】:Signing an unsigned assembly签署未签名的程序集
【发布时间】:2009-11-03 18:12:01
【问题描述】:

最近 NHibernate 2.1 的升级带来了令人头疼的情况 到表面。

似乎大多数项目默认构建为签名程序集。为了 fluentnhibernate 示例引用密钥文件 fluent.snk。

Nhibernate.search 根据我可以收集的内容构建无符号并且不会构建 签名,如果您引用生成的密钥文件,则会收到错误消息:

引用的程序集“Lucene.Net”没有强名称

这意味着像 castle.activerecord 这样的项目有 nhibernate.search 作为 当您引用可怕的错误时,将不会建立依赖项 程序集 nhibernate.search 没有强名称:

相当多的项目使用 caslte.activerecord 所以这很重要 这建立了。

有没有人知道在这里做什么,因为我完全没有想法?

这完全是疯了。

【问题讨论】:

    标签: .net horn


    【解决方案1】:
    1. 获取提供的组件的 MSIL 在 VS.NET 命令提示符下,输入以下内容: c:>ildasm providedAssembly.dll /out:providedAssembly.il
    2. 重命名/移动原始程序集 我只是在文件名后面加上“.orig”。
    3. 从 MSIL 输出和您的程序集密钥文件创建一个新程序集 假设您已经有一个程序集密钥对文件,请从 VS.NET 命令提示符执行以下操作: c:>ilasm 提供的Assembly.il /dll /key=keypair001.snk

    来源http://www.andrewconnell.com/blog/archive/2004/12/15/772.aspx

    【讨论】:

      【解决方案2】:

      问题是,您不能从强名称程序集引用非强名称程序集,但您可以反过来。这就是为什么每个像样的项目都应该签署的原因。

      当我遇到这个问题时,我会在项目作者处写下一行(或注册一个问题),并在上面的评论中给出解释,然后在等待修复时,我自己编译并签名。

      【讨论】:

      • +1。是的,选项要么自己控制并签名,要么让你所有的东西都没有签名(这通常不是一个好的选择)。
      【解决方案3】:

      所有给定的答案都有一个严重的缺陷——如果有多个相互依赖的未签名程序集,它们就不起作用。您必须手动编辑 IL 文件才能将未签名的引用更改为已签名的引用。这当然是可能的,但容易出错。

      有一个更好的方法。首先,这是我的资料来源:

      1. https://www.nuget.org/packages/Nivot.StrongNaming/1.0.4.2
      2. How to download a Nuget package without nuget.exe or Visual Studio extension?

      第一个是一个名为 StrongNaming 的 NuGet 包的链接,它允许对程序集进行强命名,它还为您处理未签名的引用! 第二个描述了如何在没有 Visual Studio 的情况下下载 NuGet 包(如有必要)。

      我个人使用 Visual Studio 通过 NuGet 包管理器本身下载它,但是,您始终可以直接浏览到 https://www.nuget.org/api/v2/package/Nivot.StrongNaming/1.0.4.2 并下载 nivot.strongnaming.1.0.4.2.zip

      下载的 zip(或使用 NuGet 的包)中有一个 tools 文件夹。找到它后,您可以轻松地将其安装为 PowerShell 模块。

      【讨论】:

        【解决方案4】:

        http://buffered.io/posts/net-fu-signing-an-unsigned-assembly-without-delay-signing 发布了详细指南。

        综上,流程如下:

        • 使用ildasm反汇编目标二进制文件
        • 使用 ilasm 重建/重组,这次使用密钥

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-03-24
          • 2011-12-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-03
          相关资源
          最近更新 更多