visual-studio-2010 visual-studio visual-studio-2012 msbuild teamcity

visual studio 2010 - MSBuild en la solución TeamCity of Visual Studio 2012



visual-studio-2010 visual-studio (6)

Alternativamente, puede copiar los objetivos de compilación que necesite desde c: / Archivos de programa (x86) / MSBuild a un subdirectorio de su proyecto (por ejemplo, / Build) asegurándose de conservar la estructura y agregar 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 /
  • Copie el contenido de C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / version> / WebApplications / a la carpeta creada
  • Agregue el elemento MSBuildExtensionsPath32 al grupo de propiedades en el nodo Proyecto en csproj
  • ¡Lucro!

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 documentadas y pone sus dependencias en control de origen

Tengo un proyecto web / sln de VS 2012 que intento construir en TeamCity. usa .NET 4.5 que está instalado en TeamCity.

El servidor de TeamCity solo tiene VS 2010 instalado .

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á intentando usar Visual Studio 2012 (v11.0) para compilar.

He configurado VisualStudioVersion para que sea 10 en el build.xml aunque ??

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

Además dentro del proyecto, está predeterminado a VS2010

<PropertyGroup> <VisualStudioVersion Condition="''$(VisualStudioVersion)'' == ''''">10.0</VisualStudioVersion> <VSToolsPath Condition="''$(VSToolsPath)'' == ''''">$(MSBuildExtensionsPath32)/Microsoft/VisualStudio/v$(VisualStudioVersion)</VSToolsPath>


Como se describe here :

  • Instalar nuget MSBuild.Microsoft.VisualStudio.Web.targets
  • Edite el archivo .csproj

Reemplazar:

<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>


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 el corredor MSBuild, TeamCity necesita saber qué versión de MSBuild usar. Esta es una configuración de un paso de compilación. La versión adecuada de MSBuild se debe seleccionar en una configuración de paso de compilación según 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 8.1.0. Entonces, si su versión de TeamCity es anterior a 8.1. necesita actualizar a la última versión 8.1.x para ver una configuración de 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 obtener más información, lea aquí: http://blog.turlov.com/2014/07/upgrade-teamcity-to-enable-support-for.html


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

VS 2015:

  • C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v14.0 / Web
  • C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v14.0 / WebApplications

VS 2013:

  • C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v12.0 / Web
  • C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v12.0 / WebApplications

VS 2012:

  • C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v11.0 / Web
  • C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v11.0 / WebApplications

VS 2010:

  • C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v10.0 / Web
  • C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v10.0 / WebApplications

.NET 4.6:

  • C: / Archivos de programa (x86) / Conjuntos de referencia / Microsoft / Framework / .NETFramework / v4.6

.NET 4.5.2:

  • C: / Archivos de programa (x86) / Conjuntos de referencia / Microsoft / Framework / .NETFramework / v4.5.2

.NET 4.5.1:

  • C: / Archivos de programa (x86) / Conjuntos de referencia / Microsoft / Framework / .NETFramework / v4.5.1

.NET 4.5:

  • C: / Archivos de programa (x86) / Conjuntos de referencia / Microsoft / Framework / .NETFramework / v4.5

.NET 4.0.1:

  • C: / Archivos de programa (x86) / Conjuntos de referencia / Microsoft / Framework / .NETFramework / v4.0.1

.NET 4.0:

  • C: / Archivos de programa (x86) / Conjuntos de referencia / Microsoft / Framework / .NETFramework / v4.0

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

Una vez que haya hecho esto, su proyecto se compilará. Debería establecer la VisualStudioVersion explícitamente a la que está utilizando solo para asegurarse de que esté configurada correctamente.

NOTA: Esta solución funciona para todos los tipos de proyectos (incluidos los proyectos web). Para un sitio web (que no tiene ningún archivo de proyecto), terminé instalando el SDK de Windows que coincidía con la versión de .NET SDK que estoy usando, porque faltaban claves de registro que causaban que no se creara.


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

  1. Crear la carpeta v11.0 en C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio
  2. Copie las carpetas Web y WebApplications desde mi cuadro de desarrollo "C: / Archivos de programa (x86) / MSBuild / Microsoft / VisualStudio / v11.0"
  3. Booom! trabajar como un encanto/
  4. Nota: instalé el "paquete redistribuible de Shell (aislado) de Microsoft Visual Studio 2012"

Resulta que es realmente simple. Para hacer que MSBuild ejecute VS2010 como creador en una solución hecha por VS2012 en TeamCity, simplemente configure la variable de entorno para la configuración de compilación de esta manera:

Name: env.VisualStudioVersion Value: 10.0

Nota: TeamCity no necesita VS2012 instalado.