visual studio 2010 - MSBuild dans la solution TeamCity de Visual Studio 2012




visual-studio-2010 visual-studio (4)

Comme décrit here :

  • Installez nuget MSBuild.Microsoft.VisualStudio.Web.targets
  • Editez le fichier .csproj

Remplacer:

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

avec:

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

Évidemment, vous devez vous assurer que les versions correspondent à votre cas à la fois sur le nuget installé et le chemin dans <Import>

J'ai un projet web / sln VS 2012 que j'essaye de construire dans TeamCity. il utilise .NET 4.5 qui est installé sur TeamCity.

Le serveur TeamCity a VS 2010 installé uniquement .

Je reçois cette erreur lorsque la construction s'exécute:

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. 

Il essaie d'utiliser Visual Studio 2012 (v11.0) pour construire.

J'ai défini le VisualStudioVersion à 10 dans le fichier build.xml ?

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

Aussi à l'intérieur du projet, il est par défaut à VS2010

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

En fait, vous n'avez pas besoin d'installer Visual Studio sur votre serveur CI. Vous avez seulement besoin de copier quelques dossiers d'une machine de développement au même endroit sur le serveur CI.

VS 2015:

  • C: \ Fichiers programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Web
  • C: \ Fichiers de programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications

VS 2013:

  • C: \ Fichiers programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web
  • C: \ Fichiers de programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ WebApplications

VS 2012:

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

VS 2010:

  • Fichiers C: \ Program (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web
  • C: \ Fichiers de programme (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications

.NET 4.6:

  • C: \ Program Files (x86) \ Assemblys de référence \ Microsoft \ Framework \ .NETFramework \ v4.6

.NET 4.5.2:

  • C: \ Program Files (x86) \ Assemblys de référence \ Microsoft \ Framework \ .NETFramework \ v4.5.2

.NET 4.5.1:

  • C: \ Program Files (x86) \ Assemblys de référence \ Microsoft \ Framework \ .NETFramework \ v4.5.1

.NET 4.5:

  • C: \ Program Files (x 86) \ Assemblys de référence \ Microsoft \ Framework \ .NETFramework \ v4.5

.NET 4.0.1:

  • C: \ Program Files (x86) \ Assemblys de référence \ Microsoft \ Framework \ .NETFramework \ v4.0.1

.NET 4.0:

  • C: \ Program Files (x86) \ Assemblys de référence \ Microsoft \ Framework \ .NETFramework \ v4.0

Ou, comme l'a suggéré Matt , vous pouvez les copier dans un sous-répertoire de votre projet et modifier l'emplacement <MSBuildExtensionsPath32> dans votre fichier MSBuild (typiquement .csproj ou .vbproj ).

Une fois que vous avez fait cela, votre projet compilera. Vous devez toujours définir VisualStudioVersion explicitement sur celui que vous utilisez pour être sûr qu'il est bien défini.

REMARQUE: cette solution fonctionne pour tous les types de projets (y compris les projets Web). Pour un site web (qui n'a pas de fichier de projet), j'ai fini par installer le SDK Windows correspondant à la version .NET SDK que j'utilise, car des clés de registre manquantes l'empêchaient de se construire.


Je suis totalement en désaccord avec la modification des fichiers de projet car cela pourrait affecter d'autres développeurs. C'est ce qui a fonctionné pour moi puisque le dossier v11.0 manquait sur le dossier de construction MS: 1) Créer v111.

  1. Créer un dossier v11.0 sur C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio
  2. Copier les dossiers Web et WebApplications de ma boîte de développement "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0"
  3. Booom! travailler comme un charme \
  4. Remarque: J'ai installé «Package redistribuable Shell (isolé) Microsoft Visual Studio 2012»

Tout d'abord, TeamCity ne nécessite pas la présence de Visual Studio de toute version à construire. Lorsqu'une étape de construction du projet est configurée avec le runner MSBuild, TeamCity doit connaître la version de MSBuild à utiliser. C'est le réglage d'une étape de construction. La version MSBuild appropriée doit être sélectionnée dans une configuration d'étape de construction en fonction des outils .NET installés sur une machine de génération. TeamCity utilisera cette valeur pour déterminer le chemin d'accès et définira une variable d'environnement lors de l'appel de MSBuild.

Le problème avec Visual Studio 2012/2013 est qu'il est uniquement pris en charge par TeamCity à partir de la version 8.1.0. Donc, si votre version TeamCity est antérieure à 8.1. Vous devez effectuer une mise à niveau vers la version 8.1.x pour afficher les paramètres de MSBuild Tools 2013. Une fois que vous avez sélectionné une version MSBuild appropriée dans les paramètres de l'étape de construction, le problème disparaît. Pour plus d'informations, lisez ici: http://blog.turlov.com/2014/07/upgrade-teamcity-to-enable-support-for.html





teamcity