tutorial example c# assemblies exe ilmerge servicestack

c# - tutorial - ilmerge example



¿Cómo combinar varios ensambles en uno? (6)

La herramienta que está buscando se llama ILMerge . Es una herramienta de línea de comandos y se puede usar así:

ilmerge /target:winexe /out:MyApp.exe MyExe.exe ServiceStack.dll ServiceStack.Interfaces.dll ServiceStack.ServiceInterface.dll ServiceStack.Text.dll

También hay un artículo que describe cómo incluir ILMerge en la configuración de su proyecto VS here

Estoy consumiendo mi pila de servicios utilizando el proyecto EXE (tarea de inicio para la aplicación azul) en que he copiado la DLL de la pila de servicios y algunas DLL de Azure en el proyecto EXE.

Cuando construyo este proyecto EXE, las DLL de Azure se incluirán en mi EXE, pero la DLL de la pila de servicios no se incluirá con EXE, ya que para ejecutar mi EXE en cualquier máquina, necesito copiar todas las DLL de la pila de servicios manualmente.

He usado el dll de esta pila de servicios para usar

JsonServiceClient client = new JsonServiceClient(servicepath);

¿Qué debería hacer para agrupar todas estas DLL en mi EXE?



Si tiene dependencias WPF, sus opciones pueden ser más limitadas ... ILMerge no parece tratar con esto. Costura.Fody (como lo mencionó Codefox arriba) funcionó perfectamente para nosotros, sin embargo, tomó aproximadamente 5 minutos para ponerse en marcha ... una muy buena experiencia.

Instalar con Nuget (seleccionando el proyecto predeterminado correcto en la consola de Package Manager).

Combina todas las DLL marcadas como "Copiar local" = verdadero y produce un .EXE fusionado (junto con el resultado estándar, la mayoría de los cuales ahora no es necesario) que también está comprimido. Esto se puede usar de forma independiente.

La licencia es MIT, por lo que puede modificar / distribuir según sea necesario.

Costura


Tienes varias opciones:

O

  • use alguna herramienta como SmartAssembly (comercial)
    puede incrustarse y combinarse entre otras cosas (no es necesario cambiar el código fuente)

O

  • codifíquese usted mismo en menos de 10 líneas (cambio de código fuente gratuito pero mínimo)
    marque todas las dependencias necesarias como "recurso incrustado" - de esta manera se incluyen en el archivo EXE ... necesita configurar un controlador AssemblyResolve que en el tiempo de ejecución lea desde Recursos y devuelva las DLL necesarias al .NET runtime ...

Una gran herramienta para incluir ensambles referenciados como recursos integrados es Costura (un complemento de Fody ). El autor Simon Kropp lo describe de la siguiente manera:

[...] una combinación de dos métodos:

El resultado es una solución súper simple que simplemente requiere recuperar Costura.Fody de NuGet.

caracteristicas:

  • Incluyendo símbolos de depuración
  • Compresión de ensambles integrados
  • Incluir / excluir conjuntos específicos
  • Otros (ver Readme )

ServiceStack.Gap proyecto ServiceStack.Gap , que muestra varios ejemplos de cómo ILMerge ServiceStack en un solo .exe multiplataforma.

ServiceStack también incluye una serie de otras características que son especialmente adecuadas para crear aplicaciones integradas donde:

  • Permite que sus servicios sean alojados automáticamente usando el Escuchador HTTP de .NET
  • Admite Vistas Razor pre compiladas
  • Admite recursos integrados
  • Admite una base de datos incrustada en Sqlite y OrmLite
  • Puede ser ILMerged en un solo .exe