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<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)''.''
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 enShow details
para ver 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 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