【问题标题】:signing assemblies with a strong name, ok, but what if some 3rd party DLL isn't signed?使用强名称对程序集进行签名,可以,但是如果某些 3rd 方 DLL 未签名怎么办?
【发布时间】:2010-11-22 11:15:56
【问题描述】:

我了解签署程序集背后的基本思想,但在使用 Telerik 或 2rd 方 DLL 时遇到问题。 我有一个使用我自己的 2 个 .DLL 的 .exe,这些 DLL 又使用企业库 DLL 和 Telerik DLL。

我给我所有的项目起了一个强名称 .snk,但是在编译时编译器解释说,例如企业库 DLL 没有签名,这是有道理的。

我不想使用 te sn.exe -Vr 命令关闭验证,甚至不想延迟签署我的项目。但是,这将如何运作?我很感激任何见解。

【问题讨论】:

    标签: c# gac copy-protection assembly-signing snk


    【解决方案1】:

    签署/退出第三方程序集很不方便,但不是火箭科学。 假设您想使用 default.snk 密钥对 System.ComponentModel.Composition.dll 等未签名的 dll 进行签名:

    打开 VS 命令提示符并使用未签名的 dll cd 到您的文件夹

    ildasm /all /out=System.ComponentModel.Composition.il System.ComponentModel.Composition.dll ilasm /dll /key=default.snk System.ComponentModel.Composition.il del System.ComponentModel.Composition.il

    在每个适用的 VS 项目中,删除并添加对已签名程序集 System.ComponentModel.Composition.dll 的引用

    【讨论】:

    • 是否推荐通过 nuget 包安装的签名程序集?
    • 如果.res 文件是由ildasm 创建的,请不要忘记/resource=somename.res
    【解决方案2】:

    是的,很有可能。
    Here are the steps.

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多