Comment utiliser MSBuild pour cible v110 plate-forme d'outils?
Je développe une application en ligne de commande qui crée plein de Visual Studio 11 solution faite d'un seul projet VC++ et qui essaie de le compiler en fin de compte à l'aide de MSBuild.
Le problème, je suis confronté est étrange.
Si j'execute mon programme en ligne de commande à l'intérieur de Visual Studio 11 il fonctionne; si je au lieu de le lancer en dehors de l'environnement de développement, il me lance le message d'erreur:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(511,5): error MSB8008: Specified platform toolset (v110) is not installed or invalid. Please make sure that a supported PlatformToolset value is selected. [f:\ABC.vcxproj]
La commande que j'utilise est la suivante:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe f:\snake\W9A30040.vcxproj /property:PlatformToolset=v110;Configuration=Debug /v:quiet
Mais j'ai le sentiment que PlatformToolset=v110 est ignoré et MSBuild utilisent v100 (Visual Studio 2010).
Avez-vous des suggestions sur la manière de dire MSBuild pour compiler pour v110 Plate-forme d'Outils?
Vous devez vous connecter pour publier un commentaire.
J'ai rencontré le même problème avec la version de VS 2012. Vous pouvez également définir la VisualStudioVersion comme une propriété avec MSBuild par opposition à traiter avec les variables d'environnement comme mentionné dans la accepté de répondre. Par exemple:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe .\myproject.vcxproj /p:VisualStudioVersion=11.0
Les variables d'environnement approche, je suis sûr que le travail tout aussi bien, honnêtement, je n'ai pas testé car j'ai essayé de rester loin d'avoir à modifier les variables d'environnement.
Assurez-vous que le haut de votre
.SLN
fichier ressemble à ceci:Lorsque vous double-cliquez sur le fichier de solution, c'est la
# Visual Studio 2012
que les contrôles de la version de Visual Studio est chargé (et les contrôles de l'icône affichée dans l'Explorateur Windows).Toutefois, lorsque vous exécutez
MSBuild
, il regarde leFormat Version 12.00
partie.Confus?
Ceci est source de confusion, car Visual Studio 2010 est la version 10.0 et Visual Studio 2012 est la version 11.0 (pas 12.0), et à l'aide de la version 12.0 solution format de fichier causes MSBuild pour (implicitement) ensemble
VisualStudioVersion
à 11,0.VisualStudioVersion
à 12 lors de l'utilisation de Visual Studio 2013?J'ai trouvé une solution de contournement pour ce problème; peut-être un problème de Visual Studio 11 Beta qui sera résolu avant la sortie officielle.
De toute façon, si vous êtes interestedm juste définir la variable d'environnement "VisualStudioVersion" égal à "11.0" avant d'appeler MSBuild.exe.
Dans des fichiers batch
ou dans VB.NET
À partir de Visual Studio 2013, MSBuild est maintenant une partie de Visual Studio, et le chemin d'accès correct devrait être $(MSBuildToolsPath) (“C:\Program Files (x86)\MSBuild\12.0\Bin”). Si vous utilisez msbuild.exe de la .Net framework dossier (“C:\Windows\Microsoft.NET\Framework64\v4.0.30319”) il ne sera pas en mesure de distinguer le vs2012 et vs2013 versions.
Utilisez le menu options pour ce faire. À partir de VC++2010 Express:
- Clic droit sur le fichier principal du projet (et non la solution elle-même au sommet de l'arbre).
- Cliquez Sur Général.
- Trouver la Plate-forme d'Outils sur le côté droit de la boîte de dialogue, la moitié supérieure.
- Changement de v110 à v100.
- Cliquez sur OK.
----- Fait ------
Microsoft fournit un fichier de commandes pour régler tous les EnvVars
Vous le trouverez dans le Menu Démarrer sous "Microsoft Visual Studio 2012 et Visual Studio Tools" ou dans le dossier Visual Studio ("C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\VsDevCmd.chauve-souris")