Laden...

.dll in .exe kompilieren

Erstellt von raul17 vor 18 Jahren Letzter Beitrag vor 16 Jahren 4.312 Views
R
raul17 Themenstarter:in
5 Beiträge seit 2005
vor 18 Jahren
.dll in .exe kompilieren

Weiss jemand wie man alle benötigten Programmbibliotheken (.dll) für eine Applikation in eine .exe kompilieren kann?

raul17

1.373 Beiträge seit 2004
vor 18 Jahren

Es gibt zwar keine besonder leichte, aber technisch gesehen verschiedene Möglichkeiten:

  1. 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.

  2. 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

436 Beiträge seit 2007
vor 16 Jahren

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.

4.207 Beiträge seit 2003
vor 16 Jahren

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

www.goloroden.de
www.des-eisbaeren-blog.de

436 Beiträge seit 2007
vor 16 Jahren

Danke erstmal. Mit ILMerge scheint es zu funktionieren.
Mich würde aber trotzdem der zweite Punkt interessieren.

4.207 Beiträge seit 2003
vor 16 Jahren

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

www.goloroden.de
www.des-eisbaeren-blog.de

436 Beiträge seit 2007
vor 16 Jahren

Und da gibt es auch keine andere Lösung, als mit ILMerge?

4.207 Beiträge seit 2003
vor 16 Jahren

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

www.goloroden.de
www.des-eisbaeren-blog.de

436 Beiträge seit 2007
vor 16 Jahren

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