程序集生成失败 - 引用程序集“XXXX”没有强名称

时间:2015-03-24 08:43:01

标签: c# .net dll .net-assembly snk

在我的解决方案中,有一个C#类库项目(一个项目)。我想在该项目中添加强名称程序集。但是(一个项目)包含另一个DLL(B.dll)。

我使用VS2012 x86 Native Tools命令提示符生成“a.snk”。 喜欢这个

  

sn.exe -k C:\ A.snk

我在(A项目)的“AssemblyInfo.cs”中添加以下代码。然后构建项目。

  

[assembly:ComVisible(true)]

     

[assembly:AssemblyDelaySign(false)]

     

[assembly:AssemblyKeyFile(“C:\ A.snk”)]

构建(项目)后,它出现错误“程序集生成失败 - 引用程序集'B'没有强名称”。但是(B.DLL)是由第三方创建的。

如何解决?非常感谢。

2 个答案:

答案 0 :(得分:0)

你有问题。您唯一的选择是要求第三方提供强名称,否则您将无法为您的申请执行此操作。 这些强名称的关键在于创建某种问责制,如果第三方dll失败或做了不正常的事情,你将对你的应用负责。 ?

在我在msdn上找到一些内容之前,我们已经问过这个问题: https://social.msdn.microsoft.com/Forums/vstudio/en-US/35930958-9775-4e56-bd38-0362d124ffc4/assign-strong-name-to-third-part-dll

答案 1 :(得分:0)

您不必为程序集(项目)创建强名称,因为它引用了具有强名称的程序集。只是不要这样做,你将能够毫无问题地编译你的程序集。实际上,所有BCL程序集都有强名称,否则无法引用。

但正如Philip Stuyck在上面的回答中所说,如果你需要创建一个强名称,你将不得不向你的第三方供应商询问B.DLL的签名版本。