代码之家  ›  专栏  ›  技术社区  ›  Chris Chilvers

将程序集绑定重定向到自定义/未签名的dll

  •  1
  • Chris Chilvers  · 技术社区  · 15 年前

    问题

    基本的问题是我想调试一些第三方代码,看看它是如何工作的,这样我就可以替换它的一部分。

    是否仍要重定向绑定,以便它不会使用GAC中的dll,而是使用我编译的副本(该副本将是无符号的或具有不同的公钥)。


    细节

    所讨论的特定项是ASP.NET MVC,原因是GAC中的DLL副本已优化,与Microsoft源服务器中的源代码不匹配。

    Microsoft已经发布了ASP.NET MVC的源代码,因此我可以自己下载并编译该DLL,但显然我不能用它们的密钥对该DLL进行签名,我可以用自己的密钥对其进行签名,但这样它将具有不同的公钥令牌。

    简单的答案是在我的应用程序中引用我的dll并重新编译我的应用程序,但是我还必须重新编译引用ASP.NET MVC(例如,MVCContrib)的其他第三方dll。

    2 回复  |  直到 12 年前
        1
  •  0
  •   Guillaume    15 年前

    您可以使用调优签名验证 SN.EXE tool .

    sn -Vr assembly
    

    从GAC中注销原始程序集,然后将您自己的程序集放在程序的文件夹中,并使用sn跳过验证。

        2
  •  0
  •   nkanani    12 年前

    我有类似的问题“修补”一个延迟签名的dlls/exes系统。使用注意事项 sn -Vr *,[PublicKey] 它失败,出现SecurityException:强名称验证失败。然后,查看注册表位置: HKLM\Software\Microsoft\StrongName\Verification HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification 它似乎有一些无效的条目。我删除了无效的条目,然后再次使用sn(对于64/32位),它的工作方式很有魅力。