Es posible incluir solo las dependencias (Dlls) sin instalar todo el framework?

Iniciado por EddyW, 5 Septiembre 2011, 11:14 AM

0 Miembros y 1 Visitante están viendo este tema.

EddyW

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!!!

raul338

No es posible :D

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


Keyen Night

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.
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

EddyW

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!

Novlucker

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

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

EddyW

:P

Estuve leyendo un artículo en la MSDN:
/lib (Opciones del compilador de C#)
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!

Keyen Night

Un trozo de código que muestra como:

Código (vb.net) [Seleccionar]
  Dim [Assembly] As Assembly = Assembly.LoadFile("C:\Ejemplo.exe")

        For Each Dll As AssemblyName In [Assembly].GetReferencedAssemblies
            Console.WriteLine(Dll.Name & " " & Dll.Version.ToString)
        Next
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

seba123neo

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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

EddyW

Cita de: Keyen Night en  6 Septiembre 2011, 02:25 AM
Un trozo de código que muestra como:

Código (vb.net) [Seleccionar]
  Dim [Assembly] As Assembly = Assembly.LoadFile("C:\Ejemplo.exe")

        For Each Dll As AssemblyName In [Assembly].GetReferencedAssemblies
            Console.WriteLine(Dll.Name & " " & Dll.Version.ToString)
        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
Alguien con "VS 2010 sp1" podría probarlo xD, ¿precisamente para que sirve? (No tengo el sp1, y son 512mb de descarga D:)

SaluDOS!