He estado luchando con esto durante unos días y después de un montón de búsquedas no puedo encontrar la ruta en la que debería estar.¿Cómo anulo la configuración CopyLocal (privada) para las referencias en .NET de MSBUILD
Lo que quiero hacer es configurar un proyecto MSBUILD que construya toda nuestra aplicación .NET (conste de 8 soluciones, y tal vez 250 proyectos divididos entre ellas) con una cantidad de configuraciones anuladas desde los archivos de proyectos individuales a hacer una construcción de depuración para mí.
Específicamente deseo construir nuestra configuración de lanzamiento con las optimizaciones desactivadas y la información de depuración completa/pdbs generadas. Además, con el fin de reducir nuestro tiempo de compilación ultra-largo actual, quiero que "copy local" (o privado en el archivo proj real xml) sea falso para cada referencia de cada proyecto.
Lo primero fue bastante fácil, puedo anular una propiedad de nivel de proyecto bastante fácilmente (incluso puedes hacer esto desde la línea de comandos de MSBuild usando/p), pero lo que no sé es cómo anular una propiedad en una referencia. He intentado varias cosas que vi aquí en StackOverflow y en la web, pero todavía nada es una solución.
Puedo hacer lo que quiero alterando Microsoft.Common.targets, comentando el código en el objetivo _CopyFilesMarkedCopyLocal omite por completo la copia de estos archivos. Pero no quiero alterar mi configuración global y hacer esto en todas las circunstancias. Creé mi propio archivo de objetivos alternativos, que funciona si modifico un archivo de proyecto individual para señalarlo, pero no puedo encontrar la manera de especificarlo para usarlo en el nivel superior (mi archivo .proj que acaba de compilar las 8 soluciones). Sería genial si de alguna manera pudiera anular solo el objetivo _CopyFilesMarkedCopyLocal en el nivel superior, de modo que si MS cambia el archivo predeterminado de objetivos, mi compilación no se arruine, pero tampoco sé cómo hacer que esto funcione.
Lo mejor sería si hubiera una manera de anular las propiedades del nivel de referencia, como puede proyectar propiedades de nivel, sin tener que volver a escribir/anular los objetivos de compilación, pero no he encontrado información que indique que esto sea posible .
Gracias de antemano por su ayuda.
P.S. No es posible para mí simplemente revisar todos los archivos de proyectos y cambiarlos; Necesito una solución que deje el código existente en su lugar como está.
Conjunto CopyLocal = false puede causar problemas diferentes durante el tiempo de implementación. Ver la entrada de mi blog "NO cambiar" Copiar local "proyecto referencias a falso, a menos que entienda subsecuencias." (Http://geekswithblogs.net/mnf/archive/2012/12/09/do-not-change-copy-local -project-references-to-false-unless.aspx) –
No responde su pregunta, pero espero que MS pueda solucionarlo de forma nativa: https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/ 13280400-improve-visual-studio-build-performance-for-large – Mark