c# visual-studio tfs msbuild uwp

c# - TFSBuild 2013 no puede cambiar la versión de msbuild



visual-studio uwp (1)

Tengo un servidor TFSBuild 2013 con el que estamos intentando construir ahora proyectos UWP, pero parece que no podemos hacer que use la versión correcta de MSBuild.

Síntomas:

Al construir los proyectos UWP, obtenemos muchos errores como este: C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v14.0 / AppxPackage / Microsoft.AppXPackage.Targets (283): se intentó una comparación numérica en "10.0.11000.0" que evalúa "10.0.11000.0" en lugar de un número, en la condición "''$ (TargetPlatformVersion)''> = ''10 .0.11000.0 ''".

Muchos informes abundan por este error, y todos le dicen que se asegure de que TFS Build esté usando la versión correcta de MSBuild. Y aquí yace el problema. Parece que no podemos hacer que el servidor de compilación use la versión correcta.

Esto es lo que hemos intentado (las definiciones de construcción usan la plantilla TfvcTemplate.12.xaml):

  • Instalación de herramientas de compilación 2015 (actualización 3) en el servidor de compilación
  • Instalación de VS2015 en el servidor de compilación (Yuck)
  • Varias combinaciones de parámetros de MSBuild en la definición de compilación. (/tv:14.0 y / p:VisualStudioVersion = 14.0)
  • Inclusión del paquete nuget de Microsoft.Net.Compilers
  • Editando la plantilla TfvcTemplate.12.xaml y configurando el paso "Ejecutar MSBuild" para configurar "ToolsVersion" a "14.0". (Tenga en cuenta que no hay una configuración "ToolsPath" en esta versión de la plantilla, así que no puedo hacer eso).
  • Setting ToolsVersion = "14.0" en cada archivo .csproj

No importa lo que cambiemos, no podemos hacer que Build Agent use la versión 14.0 de MSBuild.

Extrañamente, nuget parece encontrar la versión correcta al hacer la restauración del paquete. En los registros, vemos esto al ejecutar el comando de restauración nuget.exe: autodetección de MSBuild: utilizando la versión msbuild ''14 .0 ''de'' C: / Archivos de programa (x86) / MSBuild / 14.0 / bin ''.

Pero más abajo en los registros, donde comienzan todos los errores, vemos esto (nota: versión de herramientas incorrecta): C: / Archivos de programa (x86) / MSBuild / 12.0 / bin / MSBuild.exe / nologo / noconsolelogger "C: / Builds ... "[SNIP]

Cualquier ayuda o sugerencia recibida con gratitud - Estoy en mi ingenio final :)


Finalmente me rendí tratando de hacer que esto se comportara con la configuración, pero logré que esto funcione en la máquina de compilación pirateando el registro.

Cambié las siguientes claves de registro:

HKLM/SOFTWARE/Wow6432Node/Microsoft/MSBuild/12.0/MSBuildOverrideTasksPath HKLM/SOFTWARE/Wow6432Node/Microsoft/MSBuild/ToolsVersions/12.0/MSBuildToolsPath

En ambos casos, cambié el valor

de:

C:/Program Files (x86)/MSBuild/12.0/bin/

a:

C:/Program Files (x86)/MSBuild/14.0/bin/

Descargo de responsabilidad: no sé qué otros efectos tendrá esto, pero tiene nuestras compilaciones usando la versión correcta de MSBuild, y su alcance es limitado para el servidor de compilación.