2011-01-25 19 views
6

Tengo una solución bastante compleja, que contiene 10 proyectos aparte de los de prueba. Es una red de aplicaciones distribuidas & servicios que se comunican mediante comunicación remota; por lo tanto, tener los ensambles referenciados apropiados (versiones &) es crucial. Es por eso que quiero que todo esté compilado y empaquetado en UNA compilación.Construya toda la solución pero agregue símbolos de compilación condicional global para un solo proyecto

Una de las aplicaciones es una herramienta de demostración/análisis que ejecuta un subproceso de otra aplicación mucho más grande basada en la entrada del usuario y muestra los resultados; De esa forma, los ingenieros tienen una herramienta para ayudar a ajustar sus configuraciones para "la gran computación". Obviamente que el subproceso está contenida en otra asamblea, y una gran parte de los resultados del te presentan a los ingenieros es generada por

#if ENABLE_TRACE_MATCHING 
Trace.WriteLine("Some engineering output"); 
#endif 

Mi problema es que los símbolos de compilación condicional en la configuración del proyecto se limitan a la asamblea de ese proyecto, y hacer no se propaga a través de ensambles referenciados. ¿Cómo puedo configurar mi construcción de tal manera que todos los proyectos se construirán sin ENABLE_TRACE_MATCHING siendo definida, excepto para el proyecto de un debug/análisis de la aplicación en todos los proyectos referenciados/asambleas deben ser compilados con ENABLE_TRACE_MATCHING siendo definido

Tampoco puedo reemplazar #if ENABLE_TRACE_MATCHING por #if DEBUG, ya que eso permitiría una gran cantidad de resultados diferentes que nuestros ingenieros no sabrían cómo manejar.

Gracias de antemano.

PD: Si crees que mi código huele, entonces estoy de acuerdo. Además: en general no es mi código;)

+0

me olvidó mencionar: Es todo C# y .NET 3.5 – user588939

Respuesta

1

Necesita aprender más acerca de Microsoft Build, que es una herramienta lista para usar de Microsoft .NET presente en la instalación de cualquier marco.

Usando MSBuild puede definir estos "símbolos" (propiedades) y un lote de comandos (objetivos).

Puede crear una secuencia de comandos de MSBuild que importe los destinos predeterminados de Visual Studio de todos los proyectos en su solución, y declare en el script estas propiedades ("símbolos").

De hecho, la propiedad para establecer tales símbolos ya existe: "DefinirConstantes".

Por lo tanto, ya que lo tiene, puede tener esa secuencia de comandos de MSBuild que proporciona ese valor de propiedad, volviéndola a declarar allí, por lo que TODOS los destinos de MSBuild conocerán estos símbolos.

EDIT: Marque esta otra pregunta también: msbuild, defining Conditional Compilation Symbols

Cuestiones relacionadas