2010-06-02 10 views
5

Tengo un script msbuild master.proj que construye varios proyectos usando la tarea MSBuild.Cómo pasar propiedades de msbuild a otro script de msbuild correctamente?

Aquí es un ejemplo típico:

<Target Name="Log4PostSharp" DependsOnTargets="log4net"> 
    <MSBuild Projects="Log4PostSharp\Log4PostSharp.sln" Properties="Configuration=$(Configuration)" /> 
</Target> 

Pero, mi problema es que si más propiedades se dan en la línea de comandos, que no se pasan a la tarea de MSBuild.

¿Hay alguna manera de pasar la tarea MSBuild a todas las propiedades dadas en la línea de comando?

Gracias.

+0

me hizo una [pregunta] similar (http://stackoverflow.com/questions/3260913/how-to-access-the-msbuild-command-line- parameters-from-within-the-project-file-b) - nunca se encontró una solución a esto, lo que parece ser una deficiencia seria en msbuild, IMO. – arathorn

Respuesta

3

Tiene que pasar explícitamente su propiedad adicional como lista delimitada por punto y coma de pares de nombre/valor de propiedad en el atributo Properties. No es bonito pero es el camino a seguir:

<Target Name="Log4PostSharp" DependsOnTargets="log4net"> 
    <MSBuild Projects="Log4PostSharp\Log4PostSharp.sln" 
      Properties="Configuration=$(Configuration); 
         Platform=$(Platform); 
         OtherPropertyPassInCommandLine=$(PropertyValue)" /> 
</Target> 
+1

Esta no es una cuestión de belleza. Es simplemente imposible. Master.proj se usa para construir muchos proyectos a la vez. Simplemente no puede saber qué propiedades son relevantes para qué proyectos. – mark

Cuestiones relacionadas