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

Why isn't my C++ assembly signed?

本文关键字:我的 C++ 程序集 为什么      更新时间:2023-10-16

我有一个c++项目,设置为/clr,这是c#项目在同一解决方案中引用的。不幸的是,c++似乎没有得到正确的符号,导致错误消息"程序集没有强名称"。(sn.exe同意这个错误)
但是,在项目设置(link/Advanced)中有一个snk文件,所以应该对进行签名。此外,在相同的解决方案中,所有的项目设置似乎与另一个c++项目中的设置相同-其中一切都可以正常工作。

我在这上面扯了几个小时的头发后发现了一件事:
当消除连接器的/NOLOGO开关时,很明显连接器被调用两次。我一点也不知道为什么会这样。
现在,在工作的项目中,链接器在命令行(/KEYFILE:)中为两个调用传递snk文件,在工作的项目中,第二次调用不传递snk文件。

为什么要调用链接器两次?是什么决定了它没有获得在第二次调用中传递的snk文件?

好吧,我找到了解决方案:显然,MS吹了VS2010的SP1版本,你不得不在MSBUild安装文件夹里瞎折腾。这里有一篇文章给出了肮脏的细节。

(为什么这将在一个项目中工作,而不是在另一个我不知道。坦率地说,我已经浪费了足够多的时间在这上面了,我不会再调查下去了