assemblies incrustados en ejecutable

02/02/2005 - 13:35 por Mario Cobretti | Informe spam
Hola,

Es posible enlazar Dlls (assemblies) de forma estática en una aplicación
realizada en C#? Me cambiaría el código fuente de algún modo (utilizar
reflection, etc) ? Lo que quiero es que el archivo ejecutable contenga todos
los recursos y no precise de las librerías como archivos externos. En C++ NO
.NET se podía realizar el enlazado estático mediante la versión .lib de las
librerías.

Se puede hacer algo parecido en C#?

Saludos y gracias.

Preguntas similare

Leer las respuestas

#1 Pedro Luna Montalvo, MVP
02/02/2005 - 14:27 | Informe spam
Incrustar un ensamblado como un recurso de otro ensamblado, trae la
complicacion de programacion debido a que no estaras agregando una
referencia a dicho ensamblado, sino que deberas acceder a todos sus tipos
utilizando Reflection.

Por lo demas, no le veo inconvenientes:

// Obtener el Stream del recurso en el manifiesto que corresponde al
Assembly incrustado
Assembly miAssembly = Assembly.GetExecutingAssembly();
Stream inputStream = null;
inputStream miAssembly.GetManifestResourceStream("MiEnsambladoIncrustado.dll");

// Leer los datos binarios del recurso
int rawDataSize = (int) inputStream.Length;
byte[] rawAssemblyData = new byte[rawDataSize];
inputStream.Read(rawAssemblyData, 0, rawDataSize);

// Creo objeto el Assembly
Assembly miAssemblyIncrustado = Assembly.LoadFrom(rawAssemblyData);


y luego por medio de Reflection:

miAssemblyIncrustado.GetType("EspacioNombres.TipoEnAssembly")


Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu




"Mario Cobretti" escribió en el mensaje
news:
Hola,

Es posible enlazar Dlls (assemblies) de forma estática en una aplicación
realizada en C#? Me cambiaría el código fuente de algún modo (utilizar
reflection, etc) ? Lo que quiero es que el archivo ejecutable contenga


todos
los recursos y no precise de las librerías como archivos externos. En C++


NO
.NET se podía realizar el enlazado estático mediante la versión .lib de


las
librerías.

Se puede hacer algo parecido en C#?

Saludos y gracias.



Respuesta Responder a este mensaje
#2 Octavio Hernandez
02/02/2005 - 23:05 | Informe spam
Mario,

Microsoft tiene una herramienta para eso llamada ILMerge, de momento en fase
de investigación. La puedes descargar aquí:

http://research.microsoft.com/~mbarnett/ilmerge.aspx

Hay un artículo sobre el tema en CodeProject:

http://www.codeproject.com/useritem...mblies.asp

Slds,

Octavio

"Mario Cobretti" escribió en el mensaje
news:
Hola,

Es posible enlazar Dlls (assemblies) de forma estática en una aplicación
realizada en C#? Me cambiaría el código fuente de algún modo (utilizar
reflection, etc) ? Lo que quiero es que el archivo ejecutable contenga
todos
los recursos y no precise de las librerías como archivos externos. En C++
NO
.NET se podía realizar el enlazado estático mediante la versión .lib de
las
librerías.

Se puede hacer algo parecido en C#?

Saludos y gracias.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida