VCTargetsPath est mal lors de la construction avec MSBuild sur le serveur de build

Dans mon projet de C++, Test.wcxproj, j'ai les configurations suivantes sont définies:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>

Puis-je avoir le problématique l'importation de la valeur par défaut C++ propriétés:

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

Quand mon serveur de build construit mon projet MSBuild (fichier de configuration est Release et de la plate-forme est Any CPU), j'obtiens cette erreur:

error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

Les parties pertinentes de mon MSBuild fichier de projet ressembler à ceci:

<ItemGroup>
<ProjectFiles Include="$(MSBuildProjectDirectory)\**\*.csproj" />
<ProjectFiles Include="$(MSBuildProjectDirectory)\**\*.vcxproj" />
</ItemGroup>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>x64</Platform>
<OutputFolder>$(MSBuildProjectDirectory)\BuildOutput\$(Configuration)</OutputFolder>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)</SolutionDir>
</PropertyGroup>
...
<Target Name="Compile">
<MSBuild Projects="@(ProjectFiles)" Targets="Build" Properties="Configuration=$(Configuration);Platform=$(Platform);OutputPath=$(OutputFolder)\$(MSBuildProjectName);SolutionDir=$(SolutionDir)\" />
</Target>

Le problème

Dans mon MSBuild fichier de projet, je suis à l'aide de ToolsVersion="12.0". Visual Studio 2013 est en effet installé, donc je ne comprends pas pourquoi il choisit d'utiliser v4.0\v110. Sont mes configurations de projet pour une raison ignorée par MSBuild? Je suppose que je pourrais en quelque sorte remplacer ce dossier à l'aide de la /p switch, mais je veux que mon .proj fichier à être autonome.

Pouvez vous s'il vous plaît nous fournir des biens PlatformToolset de ce projet? Il semble que vous construire vc2012 projet sur la machine de compilation où vc2012 n'a pas été installé ou vous transmettre explicitement PlatformToolset propriété de ligne de commande. v110 est vc2012 plate-forme d'outils. v120 est vc2013 par défaut de la plate-forme d'outils.
Nous avons mis à jour un vc2010 projet à l'aide de VS2013. Maintenant, il dit "v120" partout dans le fichier de projet. Nous ne spécifiez pas un PlatformToolset en ligne de commande. Je commence à soupçonner que la machine de compilation a quelques VC11 bêta fragments de gauche.
Hey, j'ai le même problème. Jamais le résoudre? 🙂

OriginalL'auteur l33t | 2013-11-19