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

我真的希望你能以任何方式帮助我。

Microsoft的强名称.实践.复合DLL导致编译器错误

今天我发现Composite Library从版本4开始就是Prism的一部分。因此,我没有添加对我签名的dll的引用,而是添加了已经签名的Prism的NuGet包。