Microsoft.Practices.Composite-DLL的强名称会导致编译器错误

时间:2015-06-24 08:09:21

标签: c# .net dll

我想在我的C#解决方案中签署所有项目。但是,当我尝试这样做时,存在一个问题,即几个第三方程序集没有强名称。这些程序集是:

  • Microsoft.Practices.Composite.dll
  • Microsoft.Practices.Composite.Presentation.dll

在做了一些研究后,我发现了一种给第三方DLL强名的方法(source):

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'

但我当然已经添加了Microsoft.Practices.Composite.Presentation.dll

为了限制问题,我尝试将引用添加到新项目中。但是由于我在那里得到了同样的错误,我可以在我的主要解决方案中排除一些奇怪的配置。

您可以在此处下载我的测试项目:https://www.dropbox.com/s/g7sqb4vtbnasfjz/ConsoleApplication1.zip?dl=0

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

1 个答案:

答案 0 :(得分:0)

今天我发现复合图书馆是版本4以来的Prism的一部分。所以我没有添加对我签名的dll的引用,而是添加了已经签名的NuStet Prism包。