Microsoft的强名称.实践.复合DLL导致编译器错误
本文关键字:编译器 错误 DLL 复合 强名称 实践 Microsoft | 更新日期: 2023-09-27 17:59:26
我想签署我的C#解决方案中的所有项目。但当我尝试这样做时,问题是,几个第三方议会没有一个强有力的名字。这些组件是:
- 微软。实践。Composite.dll
- 微软。实践。混合成的Presentation.dll
在做了一些研究之后,我找到了一种给第三方DLL起一个强名称的方法(来源):
1) ildasm /all /out=ThirdParty.il ThirdParty.dll
2) ilasm /dll /key=YourKey.snk ThirdParty.il
这两项操作都非常成功。但是,当我从项目中删除带有未签名程序集的NuGet包,并将已签名程序集添加为引用时,我会得到以下编译器错误:
The type 'Microsoft.Practices.Composite.Events.EventBase' is defined in an assembly that is not referenced. You must add a reference to assembly 'Microsoft.Practices.Composite, Version=2.0.1.0, Culture=neutral, PublicKeyToken=null'
当然,我已经添加了微软。实践。混合成的Presentation.dll
为了限制这个问题,我试着把这个引用添加到一个新项目中。但由于我在那里遇到了同样的错误,我可以在我的主要解决方案中排除一些奇怪的配置。
你可以在这里下载我的测试项目:https://www.dropbox.com/s/g7sqb4vtbnasfjz/ConsoleApplication1.zip?dl=0
我真的希望你能以任何方式帮助我。
今天我发现Composite Library从版本4开始就是Prism的一部分。因此,我没有添加对我签名的dll的引用,而是添加了已经签名的Prism的NuGet包。