Weiss jemand wie man alle benötigten Programmbibliotheken (.dll) für eine Applikation in eine .exe kompilieren kann?
raul17
Es gibt zwar keine besonder leichte, aber technisch gesehen verschiedene Möglichkeiten:
Wenn die DLLs alle verwaltete Assemblies sind, könntest du sie und die exe mittels ildasm disassemblieren und zu einer gemeinsamen assembly zurück assemblieren.
Du könntest die Abhängigkeiten auch als eingebettete Resourcen in die Exe einkompilieren und dich selbst darum kümmern, dass sie zur Laufzeit geladen werden (AppDomain.AssemblyResolve event, Assembly.Load(byte[])
Oder du machst einfach das, was am einfachsten und sinnvollsten ist: lass die DLLs als einzelne Dateien und Bündel das Programm in ein Archiv (zip, rar) oder liefer einen Installer mit.
MfG VizOne
Hallo zusammen,
sorry das ich diesen Thread wieder öffne, aber ich stehe jetzt auch vor der Frage,
wie ich ein COM-DLL während der Laufzeit laden kann.
Vor allem interessiert mich der zweite Vorschlag vom VizOne.
Ich habe die DLL in die Resource gepackt und kann auch mittels
global::ConsoleApplication1.Properties.Resources.MyCOMAPI
auf die DLL zugreifen bzw. die DLL als byte[] auslesen.
Nun weiß ich nicht wie ich weiter machen soll.
Assembly.Load(byte[])
hat bei mir jedenfalls nicht funktioniert.
Da meckert der Compiler, dass die Datei bzw. eine Abhängigkeit davon nicht gefunden wurde oder es wurde versucht, eine Datei mit einem falschen Format zu laden.
Weiss jemand wie man alle benötigten Programmbibliotheken (.dll) für eine Applikation in eine .exe kompilieren kann?
raul17
Mit ilmerge sollte das auch gehen ...
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
Danke erstmal. Mit ILMerge scheint es zu funktionieren.
Mich würde aber trotzdem der zweite Punkt interessieren.
Mit einer COM-DLL geht das nicht, denn eine => COM ≤ DLL ist ja keine Assembly ... und Load lädt NUR Assemblies ...
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
Und da gibt es auch keine andere Lösung, als mit ILMerge?
Wundert mich ehrlich gesagt auch, dass es mit ILMerge funktioniert ... hmmm, also mir fällt dazu ehrlich gesagt nichts weiter ein, was aber nicht heißt, dass es nicht geht 😉.
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
Ich habs jetzt nicht ausgiebig getestet aber die Integration in die EXE hat geklappt.
Ich bin so vorgegangen: Hack the Build: Use ILMerge and MSBuild to Combine Multiple Assemblies into One