2009-02-15 16 views

Respuesta

12

Una forma es usar ILMerge. Esto fusionará múltiples ensamblajes en uno solo (piense en combinar todas las DLL y un exe principal en un solo exe).

+0

¿Conoces algún buen tutorial sobre cómo usar esta herramienta? – Kredns

+0

Un artículo breve pero útil de CodeProject: http://www.codeproject.com/KB/dotnet/mergingassemblies.aspx –

+0

lamentablemente esto no funcionará con los ensamblados de WPF (hasta la versión 2.11.0502). – froeschli

2

Sí :) Pero debe colocar todas las fuentes en un único ensamblaje y compilarlo en un EXE. También tenga en cuenta que el sistema de destino también debe tener instalada la infraestructura .NET requerida.

Tenga en cuenta que las políticas de seguridad en el sistema de destino pueden impedir que el usuario ejecute directamente su aplicación.

Por último, a menos que "NGEN" su código, será jitted la primera vez que se ejecuta. Esto incurrirá en algunos costos de tiempo de inicio. Esto puede ser considerable en algunos casos.

+0

El jitting que se produce no debería ser diferente de si el programa fuera un conjunto de conjuntos: el jitting se produce método por método cuando se llama por primera vez a cada método. Presumiblemente, los métodos serán llamados en la misma secuencia ya sea que el programa esté empaquetado en un solo .exe o en varios ensamblajes. –

+0

@Michael: a menos que haya una edición, la única referencia a JIT se relaciona con NGEN; en cuyo caso, no: * no * se jodificará método por método ... –

+0

@Marc - Estaba pensando que el comentario de NGEN implicaba que combinar los ensamblados en un solo .exe aumentaría el inicio tiempo de tener múltiples conjuntos. En otras palabras, estaba tratando de decir que si quiere o necesita NGEN es probable que sea independiente de si sus asambleas están fusionadas. –

2

Si lo que buscas para combinar también los ensamblados .NET que requiere su aplicación, se puede usar algo como This incluso compilar en System.dll, System.Windows.Forms.dll, etc, por lo que el usuario final incluso no necesita .Net instalado.

+0

Eso es genial, solo desearía tener $ 1500.00 para tirar. – Kredns

+1

Supongo que Mono ahora ofrece una funcionalidad similar, y Mono es gratis. –

0

Tengo esto de una pregunta similar (lo siento a quienquiera publicado la respuesta - Me parece que no puede encontrar el original de vincularlo aquí):

how to embed your application’s dependent DLLs inside your EXE file

Es un extracto de Jeffrey Richter CLR a través de C#. No lo he intentado todavía pero parece muy prometedor. Creo que también funcionará con WPF (a punto de descubrirlo por mí mismo).

+0

¡Hah! En cuanto publico el comentario, ejecuto accoss el original: http://stackoverflow.com/a/3283372/513847. –

Cuestiones relacionadas