tfs2010 - tools - tfpt
Compilar VS2013 en un servidor de compilaciĆ³n TFS con solo VS2013 (4)
Debería poder reparar la Versión de herramientas editando la Plantilla de compilación.
Abra el archivo de plantilla .xaml y encuentre la actividad "Ejecutar MsBuild for Project". En las propiedades existe la opción de configurar la versión de herramientas. Si es necesario, puede crear una propiedad de nivel de plantilla para que sea más fácil de configurar.
Estoy configurando un nuevo servidor de compilación para admitir una migración de nuestro equipo de desarrollo de VS2010 a VS2013. No estamos migrando nuestro servidor TFS por el momento, por lo que el nuevo servidor de compilación se ha configurado como un controlador de compilación VS2010 con 2 agentes. También instalé VS2013 en la máquina (enfoque de martillo de trineo).
Todo nuestro código se ha migrado a destino .Net 4.5.1 y compila bien en la estación de trabajo de un desarrollador.
La mayoría de nuestras soluciones son correctas, excepto la solución que contiene proyectos web. Estos proyectos se quejan:
No se encontró el proyecto importado "C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v11.0 / WebApplications / Microsoft.WebApplication.targets".
El proyecto importado usa la variable VisualStudioVersion en el proceso de compilación a través de estas dos líneas:
<VSToolsPath Condition="''$(VSToolsPath)'' == ''''">$(MSBuildExtensionsPath32)/Microsoft/VisualStudio/v$(VisualStudioVersion)</VSToolsPath>
...
<Import Project="$(VSToolsPath)/WebApplications/Microsoft.WebApplication.targets" Condition="''$(VSToolsPath)'' != ''''" />
que según esta página:
http://msdn.microsoft.com/en-us/library/vstudio/bb383796.aspx
se establecerá en "11.0" para los objetivos 4.5 y 4.5.1. Pero la máquina de compilación solo tiene una versión 12.0 de la ruta anterior:
"C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v12.0 / WebApplications / Microsoft.WebApplication.targets"
Estas mismas líneas .csproj parecen usarse en un nuevo proyecto VS2013, por lo que no estoy seguro de cómo podría resolverse correctamente en una máquina de compilación.
Lo que podría hacer es especificar la propiedad VisualStudioVersion al ejecutar msbuild en el servidor de compilación
msbuild myproject.csproj /p:VisualStudioVersion=12.0
Me encontré con un problema similar ... y aquí está el por qué. Comenzando con VS2013, MSBuild se envía como parte de Visual Studio en lugar de .NET Framework. Consulte este blog msdn .
Así que para resolver mi problema [la forma correcta], tuve que usar MSBuild desde "C: / Archivos de programa (x86) / MSBuild / 12.0 / bin /" en lugar de "C: / Windows / Microsoft.NET / Framework64 / v4 .0.30319 / "
Se debe a Vs2012 agregar en el archivo csproj esta parte:
<PropertyGroup>
<VisualStudioVersion Condition="''$(VisualStudioVersion)'' == ''''">10.0</VisualStudioVersion>
<VSToolsPath Condition="''$(VSToolsPath)'' == ''''">$(MSBuildExtensionsPath32)/Microsoft/VisualStudio/v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
Puede eliminar esa pieza de forma segura y su solución se generará.
Debe asegurarse de que el archivo .proj comience con <Project ToolsVersion="12"
contrario la próxima vez que abra el proyecto con visual studio 2010, agregará el nodo eliminado nuevamente.
de lo contrario, si necesita usar webdeploy o utiliza un servidor de compilación, la solución anterior no funcionará, pero puede especificar la propiedad VisualStudioVersion
en su script de compilación:
msbuild myproject.csproj /p:VisualStudioVersion=12.0
o edite su definición de compilación: