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...
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
:-mmm
ya conocia ese "workaround" pero me parece una putada tener que usar una .dll (no me gustan)
no hay altenativa? (nooo)
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...
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?
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
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)
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 ^^
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.
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)
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 ^^
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.