2009-01-25 10 views
11

Powiel możliwe:
.NET windows application, can it be compressed into a single .exe?Czy mogę dołączyć dll do exe (w Visual Studio)?

Aby uruchomić mój App muszę AxInterop.WMPLib.dll i Interop.WMPLib.dll, które znajdują się w folderze Debug i Release. Czy istnieje sposób na włączenie tych bibliotek DLL do exe, więc moja aplikacja jest dostępna tylko w jednym pliku?

+0

Chociaż jest to możliwe, nie podoba mi się to. Punktem wspólnych bibliotek jest to, że są one dzielone między programami. Co z pobieraniem ich, gdy program odkryje, że nie są jeszcze zainstalowane? –

Odpowiedz

19

Dopóki twoje biblioteki DLL są zespołami .NET, wtedy ILMerge powinno być w stanie połączyć twój exe i wszystkie jego zależności w jeden plik.

+1

Zostało to również odnotowane na stronie ILMerge, ale w przypadku aplikacji WPF użyj tego: http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr -via-c-third-edition.aspx – Menefee

0

Dołącz je jako osadzone. Możesz je wyodrębnić w czasie wykonywania.

-2

Na przykład dodaj do projektu x.dll i ustaw jego działanie kompilacyjne na zasób osadzony.

Aby wyodrębnić:

string AppPath=Assembly.GetExecutingAssembly().Location; 
Assembly ThisAssembly=Assembly.LoadFrom(AppPath); 
System.IO.Stream fs=ThisAssembly.GetManifestResourceStream("yourproectname.x.dll"); 
int ssize=(int)fs.Length; 
byte [] buf=new byte[ssize]; 
fs.Read(buf,0,ssize); 
fs.Close(); 
+2

Pierwsze dwie linie są niepotrzebną komplikacją "Assembly thisAssembly = Assembly.GetExecutingAssembly();". Na końcu brakuje tej linii: "Assembly.Load (buf);". W końcu jest to okropne rozwiązanie, ponieważ możesz uzyskać dostęp do załadowanego zespołu tylko poprzez odbicie. –

0

Tak, wyjechałem na kod, aby zapisać plik na zewnątrz ...

FileStream so=new FileStream("c:\\\wherever\\\x.dll",FileMode.Create); 

so.Write(buf,0,ssize); 

so.Close(); 

Bez dodatkowych narzędzi potrzebnych.

4

Można użyć narzędzia takie jak boxedapp lub Thinstall ...

4

Polecam również boxedapp. To świetna aplikacja!

+2

Wolę używać BoxedApp. To jest takie proste! – MastAvalons

+0

Z wyjątkiem kosztów około 500 USD. – MatBee