2009-04-23 8 views
3

Gegeben hinzuzufügen: - eine Baugruppe (zB "SomeLib.dll") - eine Textdatei (zB "myconfig.xml")Wie Ressource bestehende signierte Assembly

ich die Datei myconfig einbetten müssen. xml in die vorhandene Assembly SomeLib.dll

Bitte beachten Sie vor dem Drücken von "Antwort": Ich weiß über Ressourcen, die beim Kompilieren einbetten (csc.exe ../embedresource: Datei ...).

Die Sache ist, dass ich eine Ressource einbetten muss, nachdem Assembly erstellt hat.

Ist es möglich?

Ich weiß auch über ILMerge. Aber ich habe nicht gefunden, wie es helfen könnte.

Antwort

1

können Sie Cecil für diesen Einsatz: eine Baugruppe laden, eine Ressource hinzuzufügen, zu einer Baugruppe speichern.

+1

Sie könnten den Code teilen, den Sie benutzt haben? Ich spielte mit Cecil herum, aber ich konnte es nicht erreichen, um die Ressourcen zu sparen. Vielen Dank. – BarrettJ

0

Sie müssen die Baugruppe nach dem Hinzufügen der Ressource zurückgeben. Der Sinn der Assembly-Signatur besteht darin, zu verhindern, dass Benutzer den Inhalt einer Assembly ändern, ohne feststellen zu können, dass sie geändert wurde. Sie können signcode.exe, http://msdn.microsoft.com/en-us/library/9sh96ycy(VS.80).aspx verwenden, um die Assembly nach dem Hinzufügen der Ressource zurückzugeben, vorausgesetzt, Sie haben die richtigen Zertifikate.

+0

Das Zurücksetzen einer Baugruppe ist kein Problem. ILMerge macht das gut. Die Frage war, wie man eine Ressource zu einer bestehenden Assembly hinzufügt, ohne alle Quellen neu zu kompilieren. – Shrike

0

Die Assembly Linker tool kann verwendet werden, um Module und Ressourcen zu einer signierten Baugruppe zu kombinieren. Ich habe jedoch keine Möglichkeit gefunden, eine vorhandene Assembly als Eingabe zu verwenden.

> al.exe SomeLib.module /out:SomeLib.dll /keyfile:SomeLib.snk /embed:myconfig.xml 
+0

Ich auch. Ich schaute auf al.exe und fand nicht, wie es helfen könnte. Nur wenn Sie einen Weg finden, * .module aus bestehenden .dll zu bekommen ...: -/ – Shrike

0

Sie können möglicherweise Resource Hacker verwenden, um die Änderung der Assembly über die Befehlszeile zu automatisieren (ihr Lernprogramm enthält Beispiele zur Automatisierung). Nach der Änderung müssen Sie nur die Baugruppe verlassen.

Verwandte Themen