Visual Studio: ¿Cómo hacer que una solución dependa de otra?


¿Es posible hacer que una solución en VS dependa (es decir, incluya) de otra solución completa? He visto algunas cosas sobre "Carpetas de soluciones", pero no parecen ser lo mismo....? ¡Gracias! (Por cierto, estoy usando VS 2008)

Author: Robert Fraser, 2009-07-20

5 answers

En realidad no. Tendrías que hacer una de las siguientes cosas:

  • Haga un script de compilación que construya las soluciones en el orden correcto.
  • Pre-construir la solución A, y solo hacer referencia a las salidas binarias construidas de ella en la solución B.
  • Haga una tercera solución que contenga todos los proyectos de ambas soluciones.

Los dos primeros elementos son los más comunes, donde personalmente prefiero el segundo.

 19
Author: Sam Harwell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-20 10:00:07

Este post es antiguo, pero en estos días puede reutilizar fácilmente dependencias en otras soluciones construyendo paquetes nuget para todas ellas. VS 2015 tiene la construcción de paquetes nuget incorporada, pero actualmente es una Versión Candidata. En Visual Studio 2013 puede utilizar el Nuget.Packaging nuget package para permitir que su proyecto se construya como un paquete Nuget.

Entonces puede publicar nuevas versiones de sus paquetes en un recurso compartido de red local y configurarlo como un repositorio en Visual Studio.

Entonces los proyectos de su otra solución pueden depender de ese paquete.

Por ejemplo, supongamos que tiene una DLL de Utilidad reutilizable en una Solución llamada "Core Framework" y desea usar una utilidad allí en un sitio web que está construyendo en una solución llamada "XYZEcosystem".

En la solución CoreFramework construiría un paquete nuget para el Proyecto de Utilidad que compila a la dll de utilidad e incluye la dll y su archivo pdb en el paquete.

Luego lo publicas en tu red compartir.

Digamos que tu paquete tiene un ID como "XYZ.Núcleo.Utilidades " con una versión de 1.0.0.0.

Ahora en XYZEcosystem usaría la consola del administrador de paquetes, establezca el desplegable repositorio en su repositorio y escriba "Install-Package XYZ.Núcleo.Utilidades " e instalará la última versión de XYZ.Núcleo.Utilidad.

Si realiza un cambio a XYZ.Núcleo.Utilidades puede ejecutar Update-Package XYZ.Núcleo.Utilidades en XYZEcosystem y recogerá la nueva versión.

 11
Author: Ryan Mann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-22 19:08:13

Echa un vistazo aquí: http://blogs.msdn.com/b/habibh/archive/2009/06/24/walkthrough-adding-an-existing-visual-studio-solution-to-another-solution.aspx

En realidad, el método descrito agrega todos los proyectos de otra solución a la solución actual, no exactamente lo que queremos, pero al menos esto ahorra tiempo agregando todos los proyectos manualmente uno por uno.

 5
Author: net_prog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-02 10:32:10

No puedes hacer eso. ¿Y por qué querrías hacerlo?

Simplemente agregue todos los proyectos de los que depende (los proyectos en la solución 'other') a la solución.

Luego use referencias de proyecto (no referencias de archivo) entre los proyectos.

 1
Author: codeape,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-20 10:04:15

Una solución es una colección de ensamblados que se construyen para crear algún tipo de ejecutable o dll. No tiene sentido que una solución dependa de otra. El ensamblado de salida (ejecutable/dll) depende de los ensamblados a los que hace referencia. Si su solución depende de otros ensamblajes, haga referencia a ellos. Puede agregar proyectos a su solución (Archivo>Agregar>Proyecto existente) y luego puede agregar referencias a estos proyectos desde su proyecto de salida.

 0
Author: darasd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-20 10:01:22