Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Duda Sobre .net

Iniciado por Lord Trancos 2, 06 de Octubre de 2004, 02:43:17 PM

« anterior - próximo »

Lord Trancos 2

 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...
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

Vicente

 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

Lord Trancos 2

 :-mmm

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

no hay altenativa?   (nooo)  
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

Vicente

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

Lord Trancos 2

 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?
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

Vicente

 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

Lord Trancos 2

 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)
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

shephiroth

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

jaure

 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.



Lord Trancos 2

 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)
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

shephiroth

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

jaure

 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.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.