为什么我的C ++程序集没有签名?

时间:2011-09-27 13:22:05

标签: c++ visual-studio-2010 clr assembly-signing

我有一个C ++项目,设置为/clr,在同一解决方案中由C#项目引用。不幸的是,似乎C ++没有正确签名,导致错误消息“程序集没有强名称”。 (sn.exe同意该错误。)
但是, 是项目设置(链接器/高级)中的snk文件,因此进行签名。此外,所有项目设置似乎与同一解决方案中的另一个C ++项目相同 - 一切正常。

在我的头发上撕了好几个小时后,我发现了一件事: 当消除链接器的/NOLOGO开关时,很明显链接器被称为两次。我没有丝毫想到为什么会这样。
现在,在工作的项目中,链接器在命令行(/KEYFILE:)中传递了用于两个调用的snk文件,在工作的调用中,第二次调用获取传递的snk文件。

为什么要调用链接器两次?是什么决定它不会在第二次调用中传递snk文件?

1 个答案:

答案 0 :(得分:9)

好的,我找到了解决方案:显然,MS为VS2010吹了SP1版本,你必须在MSBUild安装文件夹中乱搞。 Here是一篇提供肮脏细节的文章。

(为什么这会在一个项目中起作用,但在另一个项目中却没有。我坦率地说,我已经失去了足够的时间撞到这堵墙,并且不再进一步调查。)