2009-05-14 8 views
2

Nach this post und der Begegnung mit dem gleichen Problem zu lesen (wenn die Manifeste zu bauen versucht):Ist es möglich, .NET Reactor mit ClickOnce-Bereitstellung zu verwenden?

MSB3171: Problem generating manifest. Could not load file or assembly or one of its dependencies. An attempt was made to load a program with an incorrect format. 

Ich würde gerne wissen, ob jemand Erfolg mit .NET Reactor (Verschlüsselung/Obfuscation-Tool) mit Clickonce hatte Einsatz. Ich habe den ganzen Morgen das Netz durchforstet und verschiedene Techniken versucht, und einige Techniken arbeiten mit Dotfuscator und Xenocode, also lese ich, aber ich kann keine Liebe von .NET Reactor bekommen.

Ich glaube wirklich, diese Nachricht empfangen wird, weil Clickonce ein Manifest gegen die verschlüsselte Datei zu erzeugen versucht, (von denen nicht einmal innerhalb .NET Reflector geöffnet) ...

Welche Möglichkeiten habe ich Hier?

Antwort

4

Wir hatten das gleiche Problem mit ClickOnce und .NET Reactor. Wir haben die Verschleierung abgelehnt.

Ja, Sie haben Recht. ClickOnce muss die Assembly-Version, ihre Abhängigkeiten, den Hersteller usw. aus einer Datei extrahieren. ClickOnce versucht, eine Assembly zu laden, die nach der Verschleierung nicht mehr die Assembly ist. Es ist jetzt eine reguläre binäre .exe-Datei.

Es gibt einen schrecklichen Workaround, der für mich gut funktionierte, aber das Projektmanagement lehnte die Idee ab.

Erstellen und verschleiern Sie alle Ihre Binärdateien. Packen Sie sie in eine Zip-Datei (oder was auch immer) auf der AfterBuild-Ereignisbasis. Markieren Sie Ihre Zip als "Datendatei" (Projekteinstellungen -> Veröffentlichen -> Anwendungsdateien ... -> Veröffentlichungsstatus -> Datendatei). Danach erstellen Sie eine einzelne, nicht verschleierte ausführbare (.exe) Assembly. Das entpackt und führt einfach eine Ihrer verschleierten ausführbaren Dateien aus. Richten Sie die ClickOnce-Veröffentlichung für diese neue ausführbare Datei ein.

EDIT: bitte fragen, ob ich nicht klar genug war.