jah*_*er1 4 .net dll strongname .net-assembly
我有一个使用第三方DLL的签名应用程序.这些DLL没有签名. - 到目前为止第一步没有问题:我刚刚签署了它们(使用ildasm.exe获取*.il,*.il中的publickeytoken,因为它们具有相互依赖关系,并使用ilasm.exe创建*.dll)
该项目现在编译良好,也启动.
但是在我的代码中,调用第三方DLL的类构造函数(或其他东西? - 这是我做的第一件事),我得到错误"强名称签名程序集必须在其中指定一个公钥InternalsVisibleTo声明"
如果你有DLL的源代码似乎没有问题,并且可以通过设置调整AssemblyInfo.cs
[assembly: InternalsVisibleTo("MyProject.Domain.Tests, PublicKey=..."]
Run Code Online (Sandbox Code Playgroud)
但是:如上所述,我有一个第三方DLL我没有源.所以没办法像这样解决问题.
有什么建议让这个运行?
我有完全相同的问题.
为什么会这样
InternalsVisibleTo使其成为其他程序集的"朋友",例如InternalsVisibleTo("OtherAssembly")InternalsVisibleTo属性必须指定其他程序集的公钥,例如InternalsVisibleTo("OtherAssembly, PublicKey=[key]")InternalsVisibleTo没有为相关程序集正确声明,因此它会抛出异常.怎么修
如果程序执行不需要"朋友"程序集(例如,它是未在生产中部署的测试程序集),请按照下列步骤操作:
ildasm.exe ThirdParty.dll /OUTPUT=ThirdParty.ilInternalsVisibleToilasm.exe ThirdParty.il /DLL /OUTPUT=ThirdParty.modified.dll /KEY=key.snksn.exe -k key.snk如果程序执行需要"朋友"程序集,则必须对所有这些朋友程序集进行签名.然后按照上面的类似步骤,除了删除之外InternalsVisibleTo,您必须使用正确的公钥修改每个声明.
| 归档时间: |
|
| 查看次数: |
1654 次 |
| 最近记录: |