visual studio que microsoft learn introduccion gratis c# .net visual-studio-2008

studio - Enlace estático de bibliotecas creadas en C#.NET



visual studio manual (5)

Estoy usando VS2008 C # .NET.

Creé 3 clases diferentes de bibliotecas en 3 proyectos. Escribí una aplicación que utiliza estas bibliotecas (dlls).

Lo que está sucediendo es que cada proyecto se está compilando en una biblioteca de clases. Por lo tanto, tengo 3 dlls y 1 exe.

En su lugar quiero tener esto de dos maneras:

  1. Solo el ensamblaje de la biblioteca de clases (dll) que contiene 3 de ellos y 1 exe.
  2. solo un EXE (todo lo que contiene) :: enlace estático.

¿Cómo podría hacer eso? No puedo encontrar ninguna opción para la vinculación estática en VS2008 también, por favor mencione las opciones de la línea de comandos también.


En lo que respecta a la respuesta de Jon Skeet , ILRepack también es una buena alternativa de open-source para ILMerge. Puedes instalarlo desde NuGet a través de:

Install-Package ILRepack


Me encontré con esta pregunta y encontré otro método para lograr estos fines en Jeffrey Richter ( http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx ): puede incrustar su .dll en su archivo ejecutable como un recurso, y luego sobrecargar el evento AssemblyResolve para cargar el ensamblaje de esa manera. Citando el código del enlace:

AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => { String resourceName = "AssemblyLoadingAndReflection." + new AssemblyName(args.Name).Name + ".dll"; using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { Byte[] assemblyData = new Byte[stream.Length]; stream.Read(assemblyData, 0, assemblyData.Length); return Assembly.Load(assemblyData); } };


Puede colocar todo su código en un proyecto EXE, usar un enlazador de terceros ( el enlazador estático de google .net para varias opciones), o usar ILMerge como se ilustra aquí .

Los enlazadores de terceros generalmente también ofrecen ofuscación de código, y algunos también pueden vincular estáticamente el .NET Framework.


También deberías echar un vistazo a ILMERGE-GUI . Es un contenedor GUI para ILMerge.


ILMerge es lo que buscas.

No estoy seguro de que realmente lo llamaría "enlace estático", simplemente está fusionando varios ensamblajes en uno. (En particular, no tenga la impresión de que se trata de un ejecutable no administrado y nativo). Sin embargo, creo que es lo que está buscando :)

Actualización : ILMerge ahora es de código abierto y también está disponible como paquete NuGet :

Install-Package ilmerge