Tengo dos soluciones que tienen un código común, por lo que me gustaría extraerlo y compartirlo entre ellos. Además, me gustaría poder liberar esa biblioteca de forma independiente porque podría ser útil para otros.
- ¿Cuál es la mejor manera de hacerlo con Visual Studio 2008?
- ¿Hay un proyecto presente en más de una solución?
- ¿Tengo una solución separada para el fragmento de código separado?
- ¿Puede una solución depender de otra?
.net
visual-studio
code-sharing
pupeno
fuente
fuente
Respuestas:
Un proyecto puede ser referenciado por múltiples soluciones.
Coloque su biblioteca o código central en un proyecto, luego haga referencia a ese proyecto en ambas soluciones.
fuente
Puede "vincular" un archivo de código entre dos proyectos. Haga clic derecho en su proyecto, elija
Add
->Existing item
, y luego haga clic en la flecha hacia abajo al lado delAdd
botón:En mi experiencia, vincular es más simple que crear una biblioteca. El código vinculado da como resultado un único ejecutable con una única versión.
fuente
File > Add > Existing Project...
le permitirá agregar proyectos a su solución actual. Solo agrego esto ya que ninguna de las publicaciones anteriores lo señala. Esto le permite incluir el mismo proyecto en múltiples soluciones.fuente
Usted puede incluir un proyecto en más de una solución. No creo que un proyecto tenga un concepto de la solución de la que forma parte. Sin embargo, otra alternativa es crear la primera solución en un lugar conocido y hacer referencia a los binarios compilados. Esto tiene la desventaja de que tendrá que hacer un poco de trabajo si desea hacer referencia a diferentes versiones en función de si está creando configuraciones de lanzamiento o de depuración.
No creo que pueda hacer que una solución realmente dependa de otra, pero puede realizar sus compilaciones automatizadas en un orden apropiado mediante scripts personalizados. Básicamente trate su biblioteca común como si fuera otra dependencia de terceros como NUnit, etc.
fuente
Puede usar comodines en línea utilizando la siguiente técnica (que es la forma en que la solución de @ Andomar se guarda en el .csproj)
Meter en:
Si desea ocultar los archivos y / o evitar que el comodín se expanda si agrega o elimina un elemento de una carpeta 'elemento virtual existente' como se indicó
MySisterProject
anteriormente.fuente
<Import
editados en archivos .csproj se almacenan en caché hasta que vuelva a cargar las soluciones como usted dice.Simplemente crearía un proyecto de biblioteca de clases separado para contener el código común. No necesita ser parte de ninguna solución que lo use. Consulte la biblioteca de clases de cualquier proyecto que lo necesite.
El único truco es que necesitará usar una referencia de archivo para hacer referencia al proyecto, ya que no será parte de las soluciones que se refieren a él. Esto significa que el conjunto de salida real tendrá que colocarse en una ubicación a la que pueda acceder cualquiera que construya un proyecto que lo haga referencia. Esto se puede hacer colocando el ensamblaje en un recurso compartido, por ejemplo.
fuente
Podría incluir el mismo proyecto en más de una solución, pero está garantizado que tendrá problemas en algún momento (las rutas relativas pueden volverse inválidas cuando mueve directorios, por ejemplo)
Después de años de luchar con esto, finalmente se me ocurrió una solución viable, pero requiere que uses Subversion para el control de la fuente (que no es algo malo)
En el nivel de directorio de su solución, agregue una propiedad svn: externals que apunte a los proyectos que desea incluir en su solución. Subversion extraerá el proyecto del repositorio y lo almacenará en una subcarpeta de su archivo de solución. Su archivo de solución simplemente puede usar rutas relativas para referirse a su proyecto.
Si encuentro más tiempo, explicaré esto en detalle.
fuente
svn:externals
enlaces duros a un repositorio. Cuando mueve el repositorio, los enlaces externos aún apuntan al antiguo repositorio.Extraiga el código común en un proyecto de biblioteca de clases y agregue ese proyecto de biblioteca de clases a sus soluciones. Luego, puede agregar una referencia al código común de otros proyectos agregando una referencia de proyecto a esa biblioteca de clases. La ventaja de tener una referencia de proyecto en lugar de una referencia binaria / de ensamblaje es que si cambia la configuración de compilación para depurar, liberar, personalizar, etc., el proyecto de biblioteca de clase común se construirá también en función de esa configuración.
fuente
Es una buena idea crear una biblioteca de clase dll que contenga todas las funciones comunes. Cada solución puede hacer referencia a este dll independientemente, independientemente de otras soluciones.
De hecho, así es como se organizan nuestras fuentes en mi trabajo (y creo en muchos otros lugares).
Por cierto, Solution no puede depender explícitamente de otra solución.
fuente
Dos pasos principales involucrados son
1- Creando un dll C ++
En estudio visual
Código de archivo de encabezado
Archivo Cpp
Mira esto
esta opción debería ser Dynamic Library (.dll) y construir la solución / proyecto ahora.
El archivo first_dll.dll se crea en la carpeta Debug
2- Vinculación en proyecto C #
Proyecto abierto C #
Agregue esta línea en la parte superior del proyecto C #
Ahora se puede acceder a la función de dll usando la siguiente declaración en alguna función
Creé dll en el proyecto c ++ en VS2010 y lo usé en el proyecto VS2013 C #. Funciona bien.
fuente
Puede alojar un servidor NuGet interno y compartir las bibliotecas comunes que se compartirán en otros proyectos interna y externamente.
Más adelante en esta lectura
fuente
Si está intentando compartir código entre dos tipos de proyectos diferentes (es decir, proyecto de escritorio y un proyecto móvil), puede buscar en la carpeta de soluciones compartidas . Tengo que hacer eso para mi proyecto actual, ya que los proyectos móviles y de escritorio requieren clases idénticas que solo están en 1 archivo. Si sigue esta ruta, cualquiera de los proyectos que tienen el archivo vinculado puede realizar cambios y todos los proyectos se reconstruirán con esos cambios.
fuente
Hay un muy buen caso para usar "agregar enlaces de archivos existentes" al reutilizar código en proyectos, y es cuando necesita hacer referencia y admitir diferentes versiones de bibliotecas dependientes.
Hacer múltiples conjuntos con referencias a diferentes conjuntos externos no es fácil de hacer sin duplicar su código o utilizar trucos con el control del código fuente.
Creo que es más fácil mantener un proyecto para desarrollo y prueba unitaria, luego crear proyectos de 'compilación' usando enlaces de archivos existentes cuando necesite crear los ensamblajes que hacen referencia a diferentes versiones de esos ensamblajes externos.
fuente
Una forma más sencilla de incluir un archivo de clase de un proyecto en otro proyecto es agregar el proyecto en la solución existente y luego agregar la referencia DLL del nuevo proyecto en el proyecto existente. Finalmente, puede usar los métodos de la clase agregada al descalcificar usando la directiva en la parte superior de cualquier clase.
fuente
A partir de VisualStudio 2015, si mantiene todo su código en una solución, puede compartir el código agregando un proyecto compartido . Luego agregue una referencia a este proyecto compartido para cada proyecto en el que desee usar el código, así como las directivas de uso adecuadas.
fuente
Ahora puedes usar el proyecto compartido
para más información revisa esto
fuente