visual studio para tfs msbuild tfsbuild vs-unit-testing-framework

tfs - selenium para visual studio



DefiniciĆ³n de TF Build con Publish target y pruebas de unidad de ejecuciĆ³n (2)

Creé una definición de construcción usando TF Build. Es la construcción nocturna de nuestro proyecto. Debe ejecutar las Pruebas unitarias definidas y debe empaquetar los proyectos de Azure Cloud Service.

Esta compilación ha estado funcionando durante un tiempo sin el paso de empaquetado. Esto dio como resultado una compilación exitosa que también ejecutó las pruebas unitarias.

En base a la siguiente guía, agregué el paquete de servicios en la nube: https://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-continuous-delivery/ . Básicamente se trata de establecer el objetivo en Publicar para msbuild (/ target: Publish) en la definición de Build.

El problema es que cuando se construye una solución con un objetivo de publicación, los proyectos de prueba de la unidad no se construyen. MSBuild volverá con el siguiente mensaje: Skipping unpublishable project . He rastreado esto de vuelta al archivo de destino de MSBuild común. Un proyecto solo se compilará cuando la publicación sea el resultado del proyecto en un exe, como se puede ver aquí: http://referencesource.microsoft.com/#MSBuildFiles/C/ProgramFiles(x86)/MSBuild/14.0/bin_/amd64/Microsoft .Common.CurrentVersion.targets, 217

Lo que he intentado:

  • Forzar la construcción de proyectos de pruebas unitarias en compilaciones de publicación. He agregado el siguiente msbuild a Unit Test csproj-files para anular el objetivo predeterminado en Publish:

    <PropertyGroup> <PublishDependsOn> Build; </PublishDependsOn> </PropertyGroup>

  • Establecer el tipo de salida del proyecto Unit Test en la aplicación de consola

En ambos casos, MSBuild dará los The specified project reference metadata for the reference "../..csproj" is missing or has an invalid value: Project para todos los proyectos a los que hace referencia el proyecto de prueba unitaria.

Siento que no estoy en el camino correcto. ¿Hay alguna forma de que pueda construir los proyectos Unit Test y construir y publicar los proyectos de Cloud Service?


Okee, fue mucho más simple de lo que pensé.

Los argumentos /target de MSBuild pueden tomar múltiples objetivos que se crean sucesivamente. Cambio mi definición de construcción para que tenga /target:Build;Publish como msbuild params. Esto solucionó el problema.


Obtuve un error (no se especificó ningún punto de entrada para el servicio en la nube) haciendo /t:Build;Publish con mi servicio. Así que hice 2 acciones separadas, una con Build y otra con Publish y eso funcionó.