Why isn't my C++ assembly signed?
I have a C++ project, set to /clr
, which is referenced by C# projects in the same solution. Unfortunately, it seems the C++ doesn't get properly signed, leading to the error messa开发者_如何学运维ge "assembly doesn't have a strong name." (sn.exe
agrees with that error.)
The one thing I have found after tearing my hair over this for hours:
When eliminating the/NOLOGO
switch for the linker, it becomes apparent that the linker is called twice. I don't have the slightest idea why that might be.
Now, in the project that works the linker gets passed the snk file in the command line (/KEYFILE:
) for both invocations, in the one that does not work, the second invocation does not get the snk file passed.
Why would the linker be invoked twice? What determines that it doesn't get the snk file passed in the second invocation?
Ok, I found the solution: Apparently, MS blew the SP1 release for VS2010 and you have to go and mess around in the MSBUild installation folder. Here is an article giving the dirty details.
(And why this would work in one project, but not in the other I have no idea. And, frankly, I've lost enough hours banging my head against this wall already, and will not investigate any further.)
精彩评论