【发布时间】:2012-12-18 23:15:34
【问题描述】:
我正在编写一个供内部使用的 Visual Studio 2012 扩展,它要求所有程序集都有一个强名称。我依赖于 RestSharp(和其他一些 dll),并且由于它没有强命名,因此我通过关注 this 为其添加一个强名称。一切都根据流程的输出进行,甚至 Visual Studio 声称如果我查看项目引用中 RestSharp.dll 的属性,它是强命名的。但是,当我使用我的扩展程序时,我得到一个 FileLoadException 声明:
无法加载文件或程序集“RestSharp,Version=104.1.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。需要强命名程序集。 (来自 HRESULT 的异常:0x80131044)
关于如何解决或解决此问题的任何想法?
【问题讨论】:
-
来自
PublicKeyToken=null,它正在寻找一个 unsigned 版本的程序集。我会删除您对 RestSharp 的所有引用,并将它们重新添加到已签名的程序集中。 -
在预构建事件中,我执行 ildasm ilasm 步骤,然后构建项目。由于项目是从指定路径引用dll,新签名的dll在哪里,它不应该有签名的版本吗?项目参考实际上是否必须签名?我会假设在构建时签名的 dll 就足够了。
-
Does the project reference actually have to be signed?是的。事后签字是不够的。 引用的程序集的程序集清单 RestSharp 跟踪完全限定的程序集名称,包括强名称(或没有强名称)。 -
@vcsjones 谢谢。我没有意识到这一点。很高兴知道。
-
这对我来说效果很好:nuget.org/packages/strongnamer
标签: .net visual-studio-2012 strongname vsix