Beim Schreiben von Programmen nutzt man fast immer externe Dateien wie zum Beispiel .dll Dateien. Ist das Programm dann als .exe released brauch es die .dll um zu funktionieren.
Es gibt mindestens 3 Möglichkeiten, dieses Problem zu umgehen. Uns interessiert jetzt nur der leichteste und geilste Weg:
ILMerge nennt sich das Microsoft Tool, dass es erlaubt, verschiedene .NET Projektdateien zu einer Datei zusammenzuführen. Das Tool ist kommandozeilenbasiert und kommt daher nur als single .exe. Es gibt zwar GUIs für ILMerge aber die Handhabung ist denkbar einfach. Auch wenn die, im Download beiliegende, Dokumentation das nicht vermuten lässt.
Kopiert ILMerge(.exe), eure Projekt .exe und alle externen Dateien, die integriert werden sollen, in ein Verzeichnis. CMD auf und los:
ilmerge /out:Final.exe Projekt.exe ExternFunctions.dll ExternData.dll
Und schon liegt in dem Verzeichnis eine Final.exe, die allein funktionstüchtig ist. Einfacher gehts gar nicht!
Wirklich gut zu wissen. Dankeschön. 😉
Merci für den Tip. Klingt wirklich sehr einfach.
Programmier doch AutoIt.. Ist viel besser und einfacher
lol das kommt wohl sehr darauf an, was man programmieren will.
hallo,
sorry wenn meine Frage das Thema nur bedingt trifft:
Ich benutze VB2008 express und habe festgestellt, das beim Verteilen der Anwendung alle nötigen dlls im Verzeichnis der Anwendung und nicht mehr in system32 sind. Warum ist das eigentlich so und kann man auch wieder system32 nutzen?
Hintergrund meiner Frage ist, wenn dlls von mehreren Anwendungen genutzt werden, werden sie im Falle eines Updates nur an einer Stelle upgedated und alle anderen Anwendungen bekommen das Update gar nicht mehr mit
Vorab schonmal Danke
Leider übersteigt das meine Kenntnisse aber vielleicht weiß es jemand hier.
Etwas funzt bei mir nicht…
Meine CMD-Ausgabe (nach dem Befehl):
An exception occurred during merging:
IlMerge.Merge: Could not load assembly from the Location ‚C:\MeinVerzeichnis\MeineEXE.exe‘. Skipping and processing rest of arguments.
bei ILMerging.ILMerge.Merge()
bei ILMerging.ILMerge.Main(String[] args)
Kann es sein, dass es nicht mit allen DLLs oder EXE funktioniert?
Danke für eine Antwort!
Ich bin da leider kein Experte, kenne die Fehlermeldung nicht. Also kann ich dich nur darauf verweisen: Google Suche