2009-01-25 29 views
11

Duplicar posibles:
.NET windows application, can it be compressed into a single .exe?¿Puedo incluir dll en exe (en Visual Studio)?

Para ejecutar mi aplicación tengo que AxInterop.WMPLib.dll y Interop.WMPLib.dll que se encuentra en depuración y liberación carpeta. ¿Hay alguna manera de incluir esos dlls en exe para que mi aplicación esté disponible solo en un archivo?

+0

Aunque esto es posible, realmente no me gusta. El objetivo de las bibliotecas compartidas es que se comparten entre programas. ¿Qué hay de descargarlos cuando su programa descubra que todavía no están instalados? –

Respuesta

19

Siempre que sus DLL sean ensamblados .NET, entonces ILMerge debería ser capaz de combinar su exe y todas sus dependencias en un solo archivo.

+1

Esto también se menciona en la página de ILMerge, pero para las aplicaciones de WPF, use esto: http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr -via-c-third-edition.aspx – Menefee

0

Inclúyalos como incrustados. Luego puede extraerlos en tiempo de ejecución.

-2

Por ejemplo, agregue x.dll al proyecto y establezca su acción de compilación en el recurso incrustado.

Para extraer:

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

Las primeras dos líneas son una complicación innecesaria de "Assembly thisAssembly = Assembly.GetExecutingAssembly();". Luego falta esta línea al final: "Assembly.Load (buf);". Finalmente, esta es una solución horrible porque puede acceder al ensamblaje cargado solo a través de la reflexión. –

0

Sí, me he dejado el código para escribir el archivo de salida ...

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

so.Write(buf,0,ssize); 

so.Close(); 

No hay utilidades adicionales necesarios.

4

Puede utilizar una herramienta como BoxedApp o Thinstall ...

4

también recomiendo BoxedApp. ¡Es una gran aplicación!

+2

Prefiero usar BoxedApp. ¡Es tan simple! – MastAvalons

+0

Excepto que cuesta alrededor de $ 500 CAD. – MatBee

Cuestiones relacionadas