BuildActivity ignora ToolsVersion


Tengo una Compilación de Integración Continua Ejecutándose en un buildAgent que no puedo hacer que funcione correctamente. Recientemente cambié nuestra base de código a C # 6.0 y cambié los proyectos a ToolsVersion 14.

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

El BuildTemplate es "DefaultTemplate.11.1" Si compruebo los archivos de registro, la compilación llama al csc incorrecto.exe (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 conmutador, la compilación se realiza correctamente. Por qué TFS buildAgent no usa ToolsVersion y cómo puedo obtener TFS 2012 para compilar mi solución Visual Studio 2015

Si añado el MSBuildArgument /tv:14.0 todavía falla. Como llama a la versión 12 de MSBuild, que es parte del Framework. NET 4.6 RC que viene con Visual Studio 2015.

Cambiar la ruta de herramientas de la actividad de MSBuild hace que la Compilación funcione, pero escupe balas si intento ejecutar mi UnitTest. Tengo dlls mal " Microsoft.VisualStudio.TestPlatform.Utilidad.excepción dll". (VS2012 también está instalado en el servidor de compilación).

ACTUALIZAR: 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<System.String>
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)'.'
Author: jessehouwing, 2015-07-02

4 answers

Para aquellos de nosotros que no vivimos dentro de construir plantillas todos los días, aquí están los pasos que lo hicieron funcionar para mí:

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

  • Haga clic derecho en la definición de compilació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 la ha personalizado). En el extremo derecho haga clic en Show details para consulte la ruta de la plantilla.

introduzca la descripción de la imagen aquí

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

introduzca la descripción de la imagen aquí

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

introduzca la descripción de la imagen aquí

  • Haga clic en este elemento que aparecerá inmediatamente propiedades

introduzca la descripción de la imagen aquí

  • Haga clic en el pequeño icono de la derecha, no intente escribirlo porque probablemente explotará y bloqueará Visual Studio.

  • Escriba ENTRE COMILLAS lo siguiente "C:\Program Files (x86)\MSBuild\14.0\bin"

introduzca la descripción de la imagen aquí

AHORA PARA LA PARTE MÁS IMPORTANTE

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

Así que acabo de repetir los pasos anteriores en ambos lugares, y luego después de comprobar en el archivo .xaml mi construir FINALMENTE funcionó bien.

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

introduzca la descripción de la imagen aquí

 41
Author: Simon_Weaver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-20 09:23:14

Editar plantilla cambiar la trayectoria de la actividad de MSBuild a "MSBuild/14.0 / Bin / MSBuild"

 13
Author: Siva palla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-02 10:48:10

Véase la respuesta de Marson.

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

 4
Author: gReX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 10:31:09

Use msbuild aruguments /p:VisualStudioVersion=14.0

 0
Author: Siva palla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-02 09:33:05