MSBuild en TeamCity de Visual Studio 2012 solución


Tengo un proyecto web /sln VS 2012 que estoy tratando de construir en TeamCity. utiliza. NET 4.5 que está instalado en TeamCity.

El servidor de TeamCity tiene VS 2010 instalado solo.

Recibo este error cuando se ejecuta la compilación:

C:\BuildAgent\work\d5bc4e1b8005d077\CUSAAdmin.Web\CUSAAdmin.Web.csproj(799, 3): 
error MSB4019: 
The imported project 
    "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" was not found. 
 Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. Project CUSAAdmin.Web\CUSAAdmin.Web.csproj failed. 
 Project CUSAAdmin.sln failed. 

Está tratando de usar Visual Studio 2012 (v11.0) para construir.

He puesto el VisualStudioVersion para ser 10 en el construir.xml sin embargo??

 <Target Name="BuildPackage">
   <MSBuild Projects="CUSAAdmin.sln" ContinueOnError="false" 
     Targets="Rebuild" 
      Properties="Configuration=$(Configuration); VisualStudioVersion=10.0"  />

También dentro del proyecto está incumpliendo a VS2010

  <PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath 
    Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
Author: BahaiResearch.com, 2013-03-15

6 answers

En realidad, no es necesario instalar Visual Studio en su servidor CI. Solo necesita copiar unas cuantas carpetas de una máquina de desarrollo a la misma ubicación en el servidor CI.

VS 2015:

  • C:\Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14. 0 \ Web
  • C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications

VS 2013:

  • C:\Program Archivos (x86)\MSBuild\Microsoft\VisualStudio\v12.0 \ Web
  • C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications

VS 2012:

  • C:\Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11. 0 \ Web
  • C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications

VS 2010:

  • C:\Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10. 0 \ Web
  • C:\Program Archivos (x86)\MSBuild\Microsoft\VisualStudio\v10.0 \ WebApplications

. NET 4.6:

  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NetFramework\v4.6

. NET 4.5.2:

  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NetFramework\v4.5.2

. NET 4.5.1:

  • C:\Program Archivos (x86)\Referencia Ensamblajes \ Microsoft \ Framework\.NetFramework\v4.5.1

. NET 4.5:

  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NetFramework\v4.5

. NET 4.0.1:

  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NetFramework\v4.0.1

. NET 4.0:

  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NetFramework\v4.0

O, como Matt sugirió , podría copiarlos en un subdirectorio de su proyecto y alterar la ubicación <MSBuildExtensionsPath32> en su archivo MSBuild (típicamente .csproj o .vbproj).

Una vez que hayas hecho esto, tu proyecto se compilará. Todavía debe establecer el VisualStudioVersion explícitamente a la que está utilizando solo para asegurarse de que está configurado correctamente.

NOTA: Esta solución funciona para todos los tipos de proyectos (incluidos los proyectos web). Para un sitio web (que no tiene archivo de proyecto), terminé instalar el SDK de Windows que coincide con la versión de.NET SDK que estoy usando, porque faltaban claves de registro que hacían que no se compilara.

 91
Author: NightOwl888,
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 11:54:31

Resulta que es muy simple. Para hacer que MSBuild ejecute VS2010 como constructor en una solución hecha por VS2012 en TeamCity, simplemente establezca la variable de entorno para la configuración de compilación de la siguiente manera:

introduzca la descripción de la imagen aquí

Name: env.VisualStudioVersion 
Value: 10.0

Nota TeamCity no necesita VS2012 instalado.

 52
Author: BahaiResearch.com,
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
2013-06-06 00:19:46

Alternativamente, puede copiar los destinos de compilación que necesita desde el c:\Program Files(x86) \ MSBuild a un subdirectorio de su proyecto (por ejemplo .\Build) asegurándose de conservar la estructura y añadir lo siguiente a su csproj:

<!-- redirect msbuild path so targets can be added to source control -->
<PropertyGroup>
  <MSBuildExtensionsPath32>..\Build\</MSBuildExtensionsPath32>
</PropertyGroup>

Por ejemplo, si la raíz de mi proyecto es C:\Dev\MyProjSln\MyProj

  • Crear carpeta C:\Dev\MyProjSln\Build\Microsoft\VisualStudio\version\WebApplications\
  • Copiar el contenido de C:\Program Archivos (x86) \ MSBuild \ Microsoft \ VisualStudio \ version>\WebApplications \ to created folder
  • Agregue el elemento MSBuildExtensionsPath32 al Grupo de propiedades bajo el nodo Project en csproj
  • Beneficio!

Personalmente, prefiero este método de seguimiento de las dependencias de destino de compilación, ya que evita que el servidor de compilación dependa de tener requisitos de estructura de carpetas no documentados, y obtiene sus dependencias en el control de código fuente

 7
Author: Matt,
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
2014-07-31 14:56:53

Como se describe aquí:

  • Instalar nuget MSBuild.Microsoft.VisualStudio.Web.targets
  • Editar el .csproj file

Sustitúyase:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> 
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

Con:

<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" Condition="true" />

Obviamente, debe asegurarse de que las versiones coincidan con su caso tanto en el nuget instalado como en la ruta en <Import>

 6
Author: Thomas Eyde,
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-08-26 05:41:47

Estoy totalmente en desacuerdo con cambiar los archivos del proyecto porque eso podría afectar a otros desarrolladores. Esto es lo que funcionó para mí ya que la carpeta v11.0 faltaba en la carpeta de compilación de MS: 1) Crear v111.

  1. Crear la carpeta v11. 0 en C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio
  2. Copiar carpetas Web y aplicaciones web de mi cuadro de desarrollo "C:\Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11. 0"
  3. Booom! trabajar como un encanto \
  4. Nota: he instalado "Microsoft Visual Studio 2012 Shell (Aislado) Paquete Redistribuible"
 3
Author: NoloMokgosi,
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
2014-03-14 09:51:47

En primer lugar, TeamCity no requiere la presencia de Visual Studio de ninguna versión para compilar. Cuando se configura un paso de compilación en el proyecto con MSBuild runner, TeamCity necesita saber qué versión de MSBuild usar. Este es un ajuste de un paso de construcción. La versión adecuada de MSBuild debe seleccionarse en una configuración de pasos de compilación de acuerdo con las herramientas.NET instaladas en una máquina de compilación. TeamCity usará ese valor para determinar la ruta de ubicación y establecerá una variable de entorno cuando invoque MSBuild.

El problema con Visual Studio 2012/2013 es que solo es compatible con TeamCity a partir de la versión 8.1.0. Así que si tu versión de TeamCity es anterior a la 8.1. necesita actualizar a la última versión 8.1.x para ver una configuración para MSBuild Tools 2013. Una vez que seleccione una versión adecuada de MSBuild en la configuración del paso de compilación, el problema desaparecerá. Para más información lea aquí: http://blog.turlov.com/2014/07/upgrade-teamcity-to-enable-support-for.html

 -1
Author: Alex T.,
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
2014-07-24 15:48:43