Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Lord Trancos 2 en 06 de Octubre de 2004, 02:43:17 PM

Título: Duda Sobre .net
Publicado por: Lord Trancos 2 en 06 de Octubre de 2004, 02:43:17 PM
 Tengo un modulo de VB.NET (funciones.vb) que me gustaria usar en varios proyectos.
El problema que tengo es que cuando lo añado a un proyecto el .NET me copia el archivo dentro de la carpeta del proyecto, por lo que acabo teniendo tantas copias del archivo como proyectos la usan.... y acaba siendo un lio. Como puedo decirle que el archivo en cuestion se encuentra en una carpeta fuera de la carpeta del proyecto ?

En resumen, quiero tener una sola copia de funciones.vb en mi disco duro, y poder usarla en diversos proyectos.

En VB6 podia hacer eso...
Título: Duda Sobre .net
Publicado por: Vicente en 06 de Octubre de 2004, 04:13:18 PM
 Hola,

hazte un proyecto que sea una librería de clases. Pon tu fichero de funciones en ese proyecto y compilalo. Se te generará una dll. En los demás proyectos que crees puedes:

- añadir una referencia a esa dll
- añadir una referencia a ese proyecto

(luego asegurate de hacer los imports si has usado namespaces)

Espero que te sea de ayuda. Un saludo!

Vicente
Título: Duda Sobre .net
Publicado por: Lord Trancos 2 en 06 de Octubre de 2004, 07:46:06 PM
 :-mmm

ya conocia ese "workaround" pero me parece una putada tener que usar una .dll (no me gustan)

no hay altenativa?   (nooo)  
Título: Duda Sobre .net
Publicado por: Vicente en 06 de Octubre de 2004, 09:59:48 PM
 Hola,

entonces hazte una solución, y añades dos proyectos:

- tu proyecto normal
- tu proyecto con las funciones

Al proyecto normal le dices que tiene una referencia al proyecto de las funciones y ya ta (cuando añades referencias tienes 3 pestañas: .NET, COM y Projects, pues la de projects). Así lo único que tienes que hacer es en tu solución agregar el proyecto existente de las funciones y no necesitas copiar el fichero muchas veces. Si no es eso ni las dlls ya más maneras no se... Un saludo!

Vicente

P.D.: estás usando el visual studio? Lo de arriba es para el visual, con otros editores ni idea...
Título: Duda Sobre .net
Publicado por: Lord Trancos 2 en 06 de Octubre de 2004, 11:01:09 PM
 Si, me referia a VS 2003.

Lo del añadir un proyecto como referencia me dice que no le vale; que tiene que ser una DLL. (yo estaba probando con un .EXE de una aplicacion consola)

no me puedo creer que el VS .NET sea tan cutre en este aspecto (nooo)

Edit: he probado con un .EXE de aplicacion windows y tampoco va.

A nadie mas le ha pasado esto? Alguna alternativa a las .dlls?
Título: Duda Sobre .net
Publicado por: Vicente en 07 de Octubre de 2004, 10:40:27 AM
 Hola,

que raro... Yo lo hago así siempre y no me da ningún problema. Tengo una solución con dos proyectos:

- un proyecto es una aplicacion de consola o un formulario de windows (vamos, de las que generan un exe).
- el otro es una librería de clases, y es el que añado como referencia al primer proyecto.

Eso es lo que tienes y no te va? Raro raro (vamos, que en el curro todo lo tenemos así...). Si no pues te tocara una dll, tampoco le veo un graaan problema. Un saludo,

Vicente
Título: Duda Sobre .net
Publicado por: Lord Trancos 2 en 07 de Octubre de 2004, 07:48:54 PM
 Wops! no.... yo usaba dos proyectos tipo .exe   :P

De todos modos he probado lo que me dices, y es lo mismo que en la primera solucion que me dabas; VS acaba generando y usando una .dll  (nooo)
Título: Duda Sobre .net
Publicado por: shephiroth en 08 de Octubre de 2004, 02:05:22 AM
 Muy buenas.

No se si llego tarde, pero hay una manera que por lo menos en c a mi me funciona. Tu añadele el archivo y el te lo copia a la carpeta local. Sal de proyecto y guardalo. Abre el archivo de solucion con el bloc de notas (en mi caso .vcprog ....... su contenido es parecido a un .xml por no decir que lo es.

Nos vamos al tag FILES, cada FILTER es una carpeta, y ahi tienes los FILES con relative path........modifica la direccion ahi a mano poniendole la situacion relativa del archivo original, y borra la copia que te creo el


No se si cambiará algo al ser vb, pero al ser .net no creo que cambie mucho

Un ejemplo seria en una carpeta tener cada proyecto en una carpeta, y otra carpeta llamada funciones....pues los archivos de las funciones habría q poner en la direccion relativa "../funciones/misfunciones.vb"

SALUDOS ^^
Título: Duda Sobre .net
Publicado por: jaure en 08 de Octubre de 2004, 07:22:35 AM
 Hola, yo creo que lo que necesitas es registrar el componente en el GAC de tu ordenador, fijate en las herramientas administrativas, que habrá un ícono de .NET configuration, cuando la ejecutes en la opción que pone Mi PC -- Cache de Ensamblado, y verás todos los ensamblados que hay instalados ya, y podrás añadir tu el tuyo.

Para añadir un ensamblado al GAC, tienes que cumplir unos requisitos, que sea una dll, o un exe (esto fácil), y que el ensamblado generado tenga nombre fuerte (mejor dicho strongname), esto no es más que unas modificaciones en el AssemblyInfo.vb, y la creación de un fichero llave.

para crear el fichero llave: se utiliza un comando "sn" desde la consola.

sn -k nombre_fichero_llave.snk

Este fichero no recuerdo si tienes que copiarlo en el directorio del proyecto o en el que se genera el ejecutable/dll, ante la duda pruebalo  ;) .


luego modificas el assemblyinfo

[assembly: AssemblyKeyFile("nombre_fichero_llave.snk")]
[assembly: AssemblyVersion("1.0.0.1")]


Con esto el ejectuable que generes, o dll, lo podrás incluir en el GAC, y desde ese momento referenciarlo en cualquier proyecto, sin que haga copias en cada directorio de proyecto.


Espero que sea esto lo que nocesites.

Un saludo.


Título: Duda Sobre .net
Publicado por: Lord Trancos 2 en 08 de Octubre de 2004, 03:01:19 PM
 jaure - gracias por la info, interesante, pero no es lo que busco (no quiero dlls).
shephiroth - tu metedo funciona, de hecho no hace falta hacerlo tan complicado, al decirle "añadir nuevo elemento" te pregunta la ruta donde quieres añadirlo. Lo malo es que en proyectos de VB.NET y C# no funciona,... solo va en proyectos de VC+  (nooo)
Título: Duda Sobre .net
Publicado por: shephiroth en 08 de Octubre de 2004, 04:05:03 PM
 Buenas.

Si, he estado mirando, y al parecer no dan esa facilidad......es muy posible que sea un bug de la version, pq es muy raro q en c++ permita y funcione correctamente y en vb y c# no deje xDD

Preguntaré a mi profesor (aprobechando q este año damos vb y al año pasado dimos c++ le preguntaré) a ver que me dice al respecto xDD

SALUDOS ^^
Título: Duda Sobre .net
Publicado por: jaure en 08 de Octubre de 2004, 04:28:47 PM
 De nada,

Pero que sepas que el método no es en si para dlls, se puede usar igual para exes, y es para tener en el sistema codigo ensamblados que puedan usar varios programas, es como un nuevo registro sin los problemas del registro de windows, en lo que respecta a versiones etc, ya que pueden convivir diferentes versiones del mismo componente sin ningún problema, de hecho en .net las dlls, no son exactamente como las de toda la vida, no tienen mucho que ver, solo se parecen por la extensión.