tfs msbuild tfs2012

tfs - BuildActivity ignora ToolsVersion



msbuild tfs2012 (4)

Tengo una ejecución de compilación de integración continua en un BuildAgent que no puedo funcionar correctamente. Recientemente cambié nuestra base de código a C # 6.0 y cambié los proyectos a ToolsVersion 14.

Instalé Visual Studio 2015 en Build Server (TFS 2012). Si ahora compruebo el código de C # 6.0, la compilación falla en el primer proyecto ("$" es inesperado o algo así)

BuildTemplate es "DefaultTemplate.11.1" Si compruebo los archivos de registro, la compilación llama al csc.exe incorrecto (C: / Windows / Microsoft.NET / Framework64 / v4.0.30319 / Csc.exe)

si inicio el ejecutable MSBuild / 14.0 / Bin / MSBuild con el proyecto sin ningún modificador, la compilación tiene éxito. ¿Por qué el BuildAgent de TFS no usa ToolsVersion y cómo puedo obtener TFS 2012 para construir mi solución de Visual Studio 2015?

Si agrego MSBuildArgument /tv:14.0, aún falla. Como llama a la versión 12 de MSBuild que forma parte del .NET 4.6 RC Framework que se incluye con Visual Studio 2015.

Cambiar la ruta de Herramientas de la Actividad de MSBuild hace que Build funcione pero escupe viñetas si intento ejecutar UnitTest. Obtengo una excepción de Permitir dlls "Microsoft.VisualStudio.TestPlatform.Utilities.dll". (VS2012 también está instalado en Build Server).

ACTUALIZACIÓN: ahora obtengo un error diferente con mis pruebas unitarias:

TF900548: An error occurred publishing the Visual Studio test results. Details: ''Method not found: ''System.Collections.Generic.IEnumerable&lt;System.String&gt; Microsoft.VisualStudio.TestPlatform.Utilities.InferSettingsHelper.MergeRunSettingsAndFindCompatibleSources(Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture ByRef, Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion ByRef, System.String, System.String, System.Collections.Generic.IDictionary`2<System.String,System.Collections.Generic.KeyValuePair`2<Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture,Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion>>, System.Xml.XPath.IXPathNavigable, System.String ByRef)''.''


Editar plantilla, cambie la actividad de msbuild ToolPath a "MSBuild / 14.0 / Bin / MSBuild"


Para aquellos de nosotros que no vivimos dentro de las plantillas de compilación todos los días, aquí están los pasos que funcionó para mí:

Primero encuentre la plantilla asociada con su compilación (si ya sabe dónde encontrarla, sáltese un par de pasos).

  • Simplemente haga clic con el botón derecho en la definición de construcción y seleccione Edit build definition

  • Seleccione la pestaña Process y verá el nombre de la plantilla (es muy probable que sea DefaultTemplate si no lo ha personalizado). En el extremo derecho, haga clic en Show details para ver la ruta de la plantilla.

  • Vaya a la pestaña Home en Team explorer y haga clic en Source control explorer

  • Encuentre el archivo de plantilla y haga doble clic para editarlo. Debería aparecer en una vista gráfica como esta. Desplácese hasta encontrar Run MSBuild for Project

  • Haga clic en este elemento que traerá propiedades inmediatamente

  • Haga clic en el pequeño ícono a la derecha; no intente ingresarlo porque probablemente explote y bloquee Visual Studio.

  • Ingrese EN CITAS la siguiente "C:/Program Files (x86)/MSBuild/14.0/bin"

AHORA PARA LA PARTE MÁS IMPORTANTE

Para mí, la Run MSBuild for Project estaba en DOS lugares.

Así que solo repití los pasos anteriores en ambos lugares, y luego de que .xaml archivo .xaml mi compilación FINALMENTE funcionó bien.

Es posible que deba reciclar el agente / controlador desde la herramienta TFS.


Ver la respuesta de Marson .

Usar la plantilla de proceso de compilación TfvcTemplate.12.xaml con el argumento /tv:14.0 Build funcionó para mí.


utilizar aruguments msbuild /p:VisualStudioVersion=14.0