2012-02-01 18 views
7

estoy tratando de crear la documentación XML para todos los proyectos de la solución, incluso cuando la opción no es registramos las propiedades del proyecto (y esto es el punto clave).MSBUILD Generar archivo de documentación XML para todos los proyectos en solución (sin tocar los proyectos)

Estoy usando TFS 2010 SP1 y probé con esto "/ p: TreatWarningsAsErrors = true/p: GenerateDocumentation = true" en el campo "Argumentos MSBuild" de la definición de mi compilación. No genera nada.

También probé con /p:DocumentationFile=foo.xml, lo que lo hace el trabajo pero suponiendo que el archivo se reemplaza por el último proyecto compilado, así que traté de usar una variable en lugar, pero sin suerte, he intentado con

/p:DocumentationFile=$(Project).xml, 
/p:DocumentationFile=$(localProject).xml 
/p:DocumentationFile=$(localBuildProjectItem).xml 

¿hay una manera de crear la documentación XML para todos los proyectos desde dentro MSBUILD aunque la opción no está marcada en el proyecto?

PD: Y sí ya veo otro hilo similar a este, pero no quiero modificar los proyectos, que es el punto de hacerlo con MSBUILD.

Gracias por su tiempo

+0

¿alguna vez encontrar una solución para esto? el siguiente no resuelve el problema – artfulhacker

+0

Nop, hasta donde yo sé, este es el mejor que podemos obtener –

+0

Estaba pensando en una posible solución, estaría iterando a través del sln y construyendo el csproj por separado, entonces DocumentationFile = .. would trabajo, vi esto, pero nunca antes había visto este tipo de sintaxis en un script de compilación http://social.msdn.microsoft.com/Forums/vstudio/en-US/e46e2500-0acc-4e0f-95aa-ed282a73d2b0/get -all-csproj-files-in-build-template-when-building-sln – artfulhacker

Respuesta

2
  1. Abra su plantilla de proceso (es decir .: $/yourproject/BuildProcessTemplates/DefaultTemplate.xaml)

  2. de desplazamiento hacia abajo para encontrar la actividad Compile the Project.

  3. Agregar una nueva variable denominada DocumentationFile, type = String, el alcance = Compile the Project
  4. establecer su valor por defecto a:

    String.Format("{0}.XML", System.IO.Path.GetFileNameWithoutExtension(serverBuildProjectItem)) Compile the Project

  5. Guardar cambios y baje hasta Run MSBuild for Project actividad.

  6. En CommandLineArguments, establezca el siguiente valor: String.Format("/p:SkipInvalidConfigurations=true {0};DocumentationFile={1}", MSBuildArguments, DocumentationFile) Run MSBuild for Project

  7. Registro de los cambios y construir. Esto debería generar la documentación incluso si no fue establecida por el proyecto.

+0

Voy a marcar esta respuesta porque creo que es lo mejor que podemos obtener sin modificar la tarea, parece que en la tarea msbuild la colección de proyectos es realmente las soluciones seleccionadas en la definición de construcción y no los proyectos individuales de cada solución –

+0

esto crea el archivo xml pero no evita que el archivo sea reemplazado cuando se construye un sln con múltiples proyectos – artfulhacker

Cuestiones relacionadas