Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: EddyW en 5 Septiembre 2011, 11:14 am



Título: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: EddyW en 5 Septiembre 2011, 11:14 am
Wenas,

Mi pregunta iba más orientada a C#, pero el caso es el mismo para VB.Net,
No comprendo la idea de poder permitir "Copiar en local" las referencias. Por ejemplo "system.dll" si necesariamente necesita el framework.

En resumen, es posible hacer un link de las dll's necesarias con la aplicación para que no dependa de todo el framework?
Tal como es el caso de Visual C++, que es posible distribuir el runtime y todo funciona de maravilla, hay algo posible o parecido para C# o vb.net?

Si no me expliqué bien, preguntad  :¬¬ (Ando durmiendo por el teclado)

SaluDOS!!!


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: raul338 en 5 Septiembre 2011, 11:31 am
No es posible :D

El .net framework es un conjunto de lenguajes, runtimes y compiladores ( y creo que algunas cositas mas) :P


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: <<J.R>> en 5 Septiembre 2011, 12:56 pm
no se si esto funcione...

http://foro.elhacker.net/net/tutorial_como_abrir_tu_aplicacion_net_sin_net_framework_instalado-t222613.0.html


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: Keyen Night en 5 Septiembre 2011, 19:33 pm
Tienes que tomar en cuenta que las dependencias del Framework tienen depencias y a su vez estas tienen más dependencias. Si tú aplicación depende por ejemplo de System.Dll está puede depender de otra dll y esa de otra, hasta puede ser más de una. Si es posible correr "Sin NetFramwork" y lo pongo entré comillas porqué si copias todas las dependencias necesarias a donde está la aplicaión obvio que funcionara pero eso incluye Megas y Megas de archivos, no es aconsejable hacerlo.

Tengo que buscar, por aquí tengo un código que al pasarle un Assembly, obtiene todas las dependencias necesarias para iniciar la aplicación sin el NetFrameWork, y el peso aproximado del ejecutable, pero lo deje a medias, se supone que usaba un algoritmo para comprimir las dependencias dentro del assembly. Muy parecido a la respuesta de arriba.


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: EddyW en 5 Septiembre 2011, 21:57 pm
Gracias por responder.

Es una aplicación de consola, no tiene muchas dependencias.
Lo que estaba intentando es hacer correr un "Hola Mundo!" escrito en C# (Para comenzar) en Windows XP sp3 en un Virtual, con la aplicación mencionada anteriormente genera un ejecutable de 3mb apróx., pero me interesa incluir las Dll's fuera y no dentro del ensamblado pero linkeados.

Por cierto, copié TODAS las dll's del .Net y no funcionó D: vaya a ser por que (O quizá me confundí y copié las de Mono ¬¬).

Espero tu respuesta sobre el código que tienes para obtener las dependencias. ;)

SaluDOS!


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: Novlucker en 5 Septiembre 2011, 22:04 pm
Como que 3MB? Si un "Hola Mundo" en sharp debe de pesar unos 5KB :huh:

[Edito]
Ahora veo que te referías a empaquetar el .NET con la aplicación que han mencionado antes.

Saludos
 


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: EddyW en 5 Septiembre 2011, 22:26 pm
:P

Estuve leyendo un artículo en la MSDN:
/lib (Opciones del compilador de C#) (http://msdn.microsoft.com/es-es/library/s5bac5fx.aspx)
En específico, leer sobre "/Reference", aunque dudo que sirva (O quizá si).

No se como listar las dependencias de un ejecutable (Aparte de las que indica el Visual Studio), por ejemplo está "MsCorEE.dll" ..
Bueno, seguiré esperando D:

SaluDOS!


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: Keyen Night en 6 Septiembre 2011, 02:25 am
Un trozo de código que muestra como:

Código
  1.  Dim [Assembly] As Assembly = Assembly.LoadFile("C:\Ejemplo.exe")
  2.  
  3.        For Each Dll As AssemblyName In [Assembly].GetReferencedAssemblies
  4.            Console.WriteLine(Dll.Name & " " & Dll.Version.ToString)
  5.        Next


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: seba123neo en 6 Septiembre 2011, 03:54 am
podes embeber las referencias de tu aplicacion como recurso dentro del .exe, eso se puede, y se cargan en memoria cuando se ejecuta y asi no necesitas llevarlas, obvio el tamaño del .exe crece segun el tamaño de la dll, hay un post mio donde pregunte y quedo la solucion de como hacerlo, es realmente util, si a veces tenes una dll y no la queres llevar, le aplicas este metodo y lo haces bien portable al .exe

lo que si las dll importantes del framework, eso ya no se puede, lo tenes que tener instalado si o si, aparte son como 200 megas de librerias.

saludos.


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: EddyW en 6 Septiembre 2011, 10:10 am
Un trozo de código que muestra como:

Código
  1.  Dim [Assembly] As Assembly = Assembly.LoadFile("C:\Ejemplo.exe")
  2.  
  3.        For Each Dll As AssemblyName In [Assembly].GetReferencedAssemblies
  4.            Console.WriteLine(Dll.Name & " " & Dll.Version.ToString)
  5.        Next
Solo me muestra MsCorEE (O era MsCord¿?) aún incluyendo la dll en el directorio junto con lo demás no funciona. D:

@seba123neo
Como podría embeber las referencias en la aplicación, lo he intentado pero no me funciona.
Por cierto, esto:
Portable Library Tools - VisualStudio MSDN (http://visualstudiogallery.msdn.microsoft.com/b0e0b5e9-e138-410b-ad10-00cb3caf4981/)
Alguien con "VS 2010 sp1" podría probarlo xD, ¿precisamente para que sirve? (No tengo el sp1, y son 512mb de descarga D:)

SaluDOS!


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: Keyen Night en 6 Septiembre 2011, 17:02 pm
Ese código solo obtiene las depencias del Assembly pero no las dependencias de las mismas.


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: seba123neo en 6 Septiembre 2011, 20:47 pm
usa el buscador, cree un post hace unos meses de como hacerlo.


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: EddyW en 6 Septiembre 2011, 22:29 pm
usa el buscador, cree un post hace unos meses de como hacerlo.
Hace unos meses O.ô?
He leído (rápidamente) todos tus topics hasta mayo ("La materia que más os a costado" o algo por ahí era el último) y no encuentro nada referente al tema menos en el buscador (Que por cierto es lo primero que hice ¬¬)


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: seba123neo en 7 Septiembre 2011, 03:13 am
es de hace un año  ;D

[Solucionado] Cargar DLL a memoria (http://foro.elhacker.net/net/solucionado_cargar_dll_a_memoria-t304923.0.html)

cualquier duda preguntame, pero es facil, es mas uno de los ultimos aportes que hice, un buscador de mercadolibre usa este metodo.

saludos.


Título: Re: Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?
Publicado por: EddyW en 7 Septiembre 2011, 05:34 am
D:

Aunque me sirvió navegar el Google buscando tu topic, llegué a dar con un S.O escrito en C# (Compilado con IL2CPU o algo así).
Y encontré ese topic, pero sinceramente no entendí mucho, si fuese posible, como sería el procedimiento en VS10? (Después de usar Mono no entiendo el VS) :P

Si escribieron un S.O de menos de 2megas que entra en un discket en C# debe ser posible ejecutar un "Hola Mundo!!!" sin necesidad de tanta cosa. Supongo no.

SaluDOS!