visual-studio - tutorial - vista previa visual studio code
¿Cómo vincular múltiples soluciones visuales de estudio juntas? (8)
Tengo 3 soluciones y la solución A requiere versiones compiladas de las dlls de la solución B y C para poder compilar. no es posible combinarlo con una sola solución ...
Hasta ahora, parece que Visual Studio no admite referencias de soluciones y msbuild es lo suficientemente astuto como para saber que está creando una solución de otra, etc., si lo intento. El objetivo general es tratar de hacer que las soluciones múltiples parezcan casi como si hubiera una sola, solo la solución A.
Creo que este es un problema común, pero ¿cómo lo vinculas muy bien?
De acuerdo con esta respuesta , le recomendaría que creara su propio archivo de proceso por lotes que construirá las soluciones pertinentes para usted.
Es muy útil utilizarlo porque el proceso de compilación generará la progresión de compilación (similar a la ventana de resultados en Visual Studio) para promover el comando para cada compilación.
Además, en el caso de que necesite construir una solución antes que la otra, puede escribir su propia orden de compilación, por ejemplo:
- construir solución B
- construir solución C
- compilar la solución A (que internamente usa los archivos construidos "solución B" y "solución C")
Rápidamente he escrito guiones para aclarar el orden de compilación mencionado anteriormente y soporte la mayoría de las versiones modernas de Visual Studio.
Saludos.
Debería ser el nivel del proyecto que estás mirando, creo. Construya los proyectos contenidos en la Solución B y C y luego agregue referencias a las DLL en los proyectos relevantes en la Solución A.
En Msbuild si tienes un grupo de propiedades
<PropertyGroup>
<SolutionsToBuild>SolutionB</SolutionsToBuild>
<SolutionsToBuild>SolutionC</SolutionsToBuild>
<SolutionsToBuild>SolutionA</SolutionsToBuild>
</PropertyGroup>
Luego ejecuta la tarea MSBuild
<MSBuild Projects="@(SolutionsToBuild)"/>
Espero que esto ayude
Esta pregunta ha aparecido en formas different , pero related . En realidad, hay una página de MSDN que cubre esto .
Lo que está buscando es un enfoque de múltiples soluciones similar al Modelo de solución única particionado para sistemas más grandes . Tenga una solución de "todo" que crea todo y mantiene sus dependencias entre componentes. Esto es lo que construye cuando necesita construir la solución A. Luego tiene soluciones separadas que solo incluyen los componentes B o C. Esencialmente, todavía tendrá 3 soluciones, pero agregará los proyectos de las soluciones B y C a la solución A.
Podría intentar agregar comandos de compilación de línea de comando para el dll (en la solución B y C) de los que depende en los eventos de preconstrucción de sus proyectos (en la solución A)
Puede agregar un proyecto Makefile a la solución A que construiría sus soluciones B y C (usando msbuild por ejemplo) y haría que todos los proyectos en A dependieran de ese proyecto Makefile. De esta forma, no podría agregar referencias de proyectos a proyectos en B y C, pero puede usar referencias dll y siempre se compilarán a partir de las fuentes más recientes.
Puede intentar automatizar el proceso de fusión para ahorrar algo de tiempo: http://code.google.com/p/merge-solutions/
Aunque tuvimos un problema ligeramente diferente: alrededor de 15 soluciones (~ 150 proyectos en total) que usaban una biblioteca común. El problema era que si intentábamos fusionarlos todos en uno para refactorizar / exterminar el código redundante de la biblioteca común. 1. La fusión de 15 soluciones implica un montón de clics y esperas en VS 2. La solución resultante nunca estuvo actualizada. Nadie se molestó en actualizarla debido a su tamaño.
Recientemente descubrí que en Visual Studio 2008 puede incluir proyectos existentes en múltiples soluciones. El único inconveniente hasta ahora parece ser que si realiza un cambio en un proyecto compartido y tiene múltiples soluciones abiertas que usan ese proyecto compartido, se le pedirá que "vuelva a cargar" las otras soluciones.
Por lo tanto, simplemente "Agregar proyecto existente" a todas las soluciones que necesitan el proyecto. Estoy usando TFS en mi sitio actual y parece que no hay problemas con el control de fuente ether.
Si no puede incluir los proyectos B y C en la misma solución que el proyecto A, no hay manera de asegurarse de que tenga binarios para B y C que contengan el último código fuente cuando construya el proyecto A.
La solución más fácil que he visto es tener una carpeta común en el repositorio de código fuente donde cada proyecto copia sus binarios si es necesario compartirlos. Luego, todos los demás proyectos pueden hacer referencia a los archivos binarios en esa carpeta, siempre que sus carpetas locales tengan el mismo aspecto que el repositorio.
No es una solución perfecta, pero es bastante fácil trabajar con ella.