it-swarm.com.de

Überprüfung des starken Namens fehlgeschlagen

Zwei Maschinen Sowohl mit .NET 3.5 als auch mit den VS 2008 VC++ SP1-Redistributables

Ein einzelnes Exe, das zwei signierte DLLs verwendet, eines in C++/CLI und eines in C #

Das Exe lädt und läuft problemlos auf einer Maschine.

Auf der anderen Seite bekomme ich "Strong Name Validation Failed" für die ausführbare C++ - Datei (HRESULT 0x8013141A).

Irgendwelche Ideen?

22
rc1

Öffnen Sie den Befehl Aufforderung als Administrator und geben Sie die folgenden Befehle ein:

reg DELETE "HKLM\Software\Microsoft\StrongName\Verification" /f
reg ADD "HKLM\Software\Microsoft\StrongName\Verification\*,*" /f
reg DELETE "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification" /f
reg ADD "HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification\*,*" /f
19
Butsaty

Öffnen Sie den Befehl Prompt als Administrator und geben Sie den folgenden Befehl ein:

"C:\Programme\Microsoft SDKs\Windows\v6.0A\Bin\x64\sn.exe" -Vr <dllpath>

Beachten Sie, dass das Argument die Groß- und Kleinschreibung berücksichtigt. Quelle mit weiteren Details: http://blogs.msdn.com/b/keithmg/archive/2012/03/20/strong-name-validation-failed -exception-from-hresult-0x8013141a.aspx

13
Adam Szabo

Sie müssen die 64-Bit-Version von "sn.exe" auf einem 64-Bit-Computer verwenden. (C:\Programme\Microsoft SDKs\Windows\v6.0A\Bin\x64\sn.exe)

13
Richard Hein

Ist der Code, auf dem der Code auf einem "Entwicklungscomputer" ausgeführt wird, auf dem möglicherweise "sn.exe -Vr AssemblyName.dll" zu einem bestimmten Zeitpunkt ausgeführt wurde, wodurch Sie eine mit Verzögerung versehene Assembly verwenden könnten, als wäre sie vollständig signiert. Wenn Sie die mit Verzögerung versehene Assembly auf einen anderen Computer übertragen und ausführen, schlägt die Überprüfung des starken Namens fehl, da sie nicht vollständig signiert ist.

7
Colin Desmond

Die SN.EXE fehlt in neueren Versionen von Visual Studio. In Visual Studio 2012 Müssen wir den "Entwicklerbefehl Eingabeaufforderung für Visual Studio 2012" verwenden. Führen Sie dann den Befehl "sn" aus.

Syntax: sn -Vr *, 2d58152b8e842be2

dabei ist "2d58152b8e842be2" das in der Fehlernachricht angezeigte öffentliche Schlüsseltoken. Irgendwie löste das allein mein Problem nicht.

4
Vishnu Prasanth

In meinem Fall hatte ich dasselbe Problem mit Visual Studio 2015 und ich hatte bereits die Vollversammlung unterschrieben. 

Ich habe es folgendermaßen behoben: Klicken Sie mit der rechten Maustaste auf das Projekt, das das Problem verursacht -> "Eigenschaften" -> "Erstellen" -> Ändern Sie den Wert des Felds "Plattformziel".

Ich musste es von Any CPU in x86 ändern, aber ich denke, dass Sie in Abhängigkeit von dem Projekt und der fehlgeschlagenen Bibliothek seinen Wert in x64 ändern sollten.

4
christiansr85

Möglicherweise können Sie dies bei der Entwicklung umgehen, indem Sie in den Projekteinstellungen -> Signieren -> vorgehen und die Option "Assembly signieren" deaktivieren.

Ich bin heute beim Debuggen gegen eine Quellcode-Kopie des Entity Frameworks darauf gestoßen.

3
jocull

Ich bin dem heute begegnet und stolperte über http://timgeerts.blogspot.co.uk/2009/08/strong-name-validation-failed.html , was die Lösung zu sein scheint.

Option 1) Deaktivieren Sie die Codeabdeckung (in VS 2010 gehen Sie zu Testeinstellungen - ›Daten und Diagnose -› Deaktivieren Sie das Kontrollkästchen "Aktiviert" neben der Codeabdeckung).

Option 2) Fügen Sie die Signaturschlüsseldatei der Code-Coverage-Konfiguration hinzu (in VS 2010 gehen Sie zu Testeinstellungen - ›Daten und Diagnose -› Wählen Sie Code Coverage aus und klicken Sie oben auf "Konfigurieren". Dies entspricht dem Attribut "keyFile") für das CodeCoverage-Tag in der Datei .testsettings.)

In VS 2012 ist die Codeabdeckung standardmäßig aktiviert. Sie kann über eine .runsettings-Datei mit einem entsprechenden Ausschluss deaktiviert werden. Unter http://msdn.Microsoft.com/de-de/library/jj159530.aspx finden Sie weitere Informationen und eine Beispieldatei. Für Option 2 scheint, obwohl in der .runsettings-Datei keine explizite Einstellung vorhanden ist, das Richtige automatisch in Bezug auf das Signieren (YMMV) zu geschehen. Wenn Sie jedoch auf eine VS 2010-.testsettings-Datei verweisen, muss diese wie oben beschrieben bearbeitet werden. 

2
jo.p.kennedy

Klicken Sie mit der rechten Maustaste auf Projekt → Eigenschaften → Registerkarte Erstellen → Plattformziel → Wählen Sie "x64" aus.

1
Ayslan

Ich habe dieses Problem behoben, indem ich zum Build-Menü (oberes Fenster) ging und "Rebuild xxxProject.plugin" nur für dieses bestimmte Projekt ansprach, im Gegensatz zur Erstellung der gesamten Lösung.

0
ToFo

Ich arbeite mit VS.Net Ultimate 2012

und diese Lösung hat mir geholfen:

Klicken Sie mit der rechten Maustaste auf Projekt-> Eigenschaften-> Registerkarte Erstellen-> Schalter Serialisierungsassembly generieren auf Aus-> Fertig

0
Fery