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)'.'
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 enShow details
para consulte la ruta de la plantilla.
- Vaya a la pestaña
Home
en Team explorer y haga clic enSource 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 que encuentre
Run MSBuild for Project
- Haga clic en este elemento que aparecerá inmediatamente propiedades
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"
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.
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"
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í.
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
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