Gibt es eine einfache Möglichkeit, um Zeichen ein C++ CLI-assembly in VS 2010?
Jetzt bin ich Einstellung der Linker/Erweitert/KeyFile-option.
Ich bin immer der "mt.exe : Allgemeine Warnung 810100b3: einen starken Namen signierte assembly and embedding eine manifest-die Signatur ungültig macht. Sie müssen re-signieren dieser Datei, damit Sie eine gültige assembly.".
Lesung aus dem web, es klingt so, als müsste ich die Verzögerung der Unterzeichnung option, das SDK herunterladen und ausführen sn.exe als post-build-Ereignis. Doch es muss ein einfacher Weg, dies zu tun häufige operation in VS2010?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es einen fairen Betrag von Lahmheit, das hier nur noch nie vorher gearbeitet. Es wurde "behoben" in VS2010, mt.exe erzeugt jetzt eine Warnung, anstatt zuzulassen, dass dieser automatisch schief gehen. Keine wirkliche Lösung, und es ist nicht eine offensichtliche einer, der linker kann nicht nur einbetten der Signatur und immer noch erlauben, mt.exe laufen danach.
Ist die Lösung zu re-signieren Sie die assembly mit einem post-build-Ereignis. Machen Sie es wie folgt Aussehen:
Wenn Sie nicht bereits haben die key-Datei, die Sie benötigen zu erstellen .snk-Datei selbst zu erstellen, führen Sie sn.exe aus der Visual Studio-Eingabeaufforderung. zum Beispiel:
Oder extrahieren Sie es aus einem container, oder verwenden Sie Ihre bestimmte key-Datei. Verzögerung der Unterzeichnung ist nur eine Frage der Ausführung sn.exe mit der richtigen Kommandozeilen-Optionen.
Wenn Sie können nicht/wird nicht zum Bearbeiten von Microsoft.Cpp.Win32.Ziele, hinzufügen des folgenden in die Projekt-Datei funktioniert auch:
Paul Mead ' s Vorschlag ist auf der richtigen Spur, doch das scheint endgültig: http://blogs.msdn.com/b/vcblog/archive/2011/03/11/10140139.aspx. Beachten Sie, dass es einfach um den text zu ändern aber weglassen, ändern Sie die "%" auf einem "$".
Ich lief in dieses problem, mit VS2010 SP1 für die WIN32-Plattform. Blick auf die bauen .log-Datei fand ich, dass die /KEYFILE-parameter gegeben wurde, um die erste Verknüpfung für die .DLL, aber nach dem manifest erstellt wurde und der zweite link war durchgeführt manifest die /KEYFILE parameter fehlt. Nachdem wir uns ein wenig um, fand ich, dass das problem in der Datei Microsoft.Cpp.Win32.Ziele in C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32. Es ist ein Tippfehler nach dem KeyFile-Attribut für den zweiten link. Ich habe es behoben durch ändern der Zeile 441:
zu
Mit, dass die änderung der zweiten linker-pass enthalten, die /KeyFile qualifier und die .DLL wurde richtig gebaut wird mit dem publickey eingebettet.
Meiner Erfahrung nach der einfachste Weg ist:
1) Öffnen Sie die Visual Studio-Eingabeaufforderung, 2010 . Gehen Sie zu Ihrem Projekt-Verzeichnis (das Verzeichnis mit den Quelldateien). Geben Sie dann
sn -k yourKeyName.snk
.2) Öffnen Sie Ihr Projekt in visual studio 2010 und öffnen Sie die AssemblyInfo.cpp Datei und fügen Sie diese Zeile
[assembly:AssemblyKeyFileAttribute("yourKeyName.snk")];
.3) Öffnen, Projekt->Eigenschaften->Linker->Erweitert. Und in der "Schlüssel-Datei" - Steckplatz und setzen Sie
yourKeyName.snk
. Auch in der "Delay-Sign" slot, wählen SieYes (\DELAYSIGN)
.4) Erstellen Sie Ihr Projekt wie gewohnt.
Phil Atkin ' s Antworten und der link ist der Weg, um diesen Fehler zu beheben.
Microsoft endlich um zur Bewältigung der sich es für Visual Studio 2010, aber Sie nie ein Servicepack beheben.
Gehen Sie zu dieser link für die MS Erklärung und mehrere Möglichkeiten, es zu beheben.
http://blogs.msdn.com/b/vcblog/archive/2011/03/11/10140139.aspx
Es funktionierte für mich. Danke Phil. (Ich würde bis Stimmen Sie, aber ich bin immer noch ein Neuling.)
Bearbeiten für Mzedeler:
Hier ist die wichtigste info aus dem link, dass die meisten Menschen in der Lage sein zu verwenden. Es überspringt die Geschichte und multi-Projekt Auswirkungen. (Auf den link gehen, um zu sehen, das Zeug.)
Erste: Beheben Sie den Fehler im build-Prozess:
Neu definieren, den "Key-Datei" und "Delay-Sign" - Eigenschaften, die für die Unterzeichnung Ihres Projekts:
Diese Schritte arbeitete für mein Projekt. Für mehr details, gehen Sie auf den link oben, die Phil zur Verfügung gestellt.
Ende Bearbeiten