【问题标题】:Assembly generation failed -- Referenced assembly 'XXXX' does not have a strong name程序集生成失败 - 引用的程序集“XXXX”没有强名称
【发布时间】:2015-05-27 11:59:38
【问题描述】:

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

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

sn.exe -k C:\A.snk

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

[程序集:ComVisible(true)]

[组装:AssemblyDelaySign(false)]

[程序集:AssemblyKeyFile("C:\A.snk")]

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

如何解决?非常感谢。

【问题讨论】:

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


    【解决方案1】:

    你有问题。您唯一的选择是要求第三方提供一个强名称,否则您将无法为您的应用程序这样做。 这些强大名称的意义在于创建某种问责制,如果第三方 dll 出现故障或执行不正常的操作,您是否要对您的应用负责?

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

    【讨论】:

      【解决方案2】:

      您不必为您的程序集(一个项目)创建一个强名称,因为它引用了一个具有强名称的程序集。只需不这样做,您就可以毫无问题地编译您的程序集。事实上,所有 BCL 程序集都有强名称,否则无法被引用。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多