2016-09-27 6 views
0

Ich baue n C# ausführbare Datei, die als eine 32-Bit-Anwendung (aufgrund anderer Umgebungseinschränkungen) erstellt werden muss. Als Post-Build-Schritt verwende ich editbin.exe \LARGEADDRESSAWARE, damit die 32-Bit-Anwendung mehr als 2 GB Arbeitsspeicher verwenden kann. obwohl ich bemerkt habe, dass dies die Validierung des starken Namens durchbricht.Starke Namensvalidierung schlägt nach dem Aktivieren von LARGEADDRESSAWARE fehl

Vor dem editbin.exe Befehl ausführen betreibe ich sn.exe -vf den starken Namen zu überprüfen:

sn.exe -vf [my exe]

Der Ausgang: Assembly '[my exe]' is valid

Dann editbin.exe /LARGEADDRESSAWARE [my exe]' which just exits without any message. I verify that it's enabled to use more than 2GB by checking the headers via dumpbin/headers [meine exe] `Ich betreibe.

schließlich erneut ausführen ich den sn.exe Befehl und erhalten die folgende Ausgabe:

Failed to verify assembly -- Strong name validation failed for assembly '[my exe]'.

Irgendwelche Ideen, wie ich die Funktionalität von LARGEADDRESSAWARE aktivieren kann, ohne die Überprüfung des starken Namens zu unterbrechen?

Antwort

0

Ein starker Name berücksichtigt den Hash der Datei, die stark benannt wird; Indem Sie die Datei mit editbin.exe \LARGEADDRESSAWARE ändern, ändern Sie die Datei, also den Hash der Datei, und damit den starken Namen.

Sie müssen Ihre Build-Schritte ändern, und stellen Sie sicher, dass die Assembly genau so ist, wie Sie es wollen vor mit dem starken Namen Schritt. Abhängig von Ihrer Build-Pipeline kann dies bedeuten, dass Sie sie nicht in Visual Studio nennen und stattdessen die Befehlszeile verwenden.

+0

Über die Kommandozeile mit 'sn.exe' nehme ich an? – Fizz

+0

Ja, sn.exe kann sowohl starke Namen zuweisen als auch überprüfen, wie Sie es tun. –

Verwandte Themen