183 votes

Comment spécifier une plateforme pour MSBuild?

Je suis en train d'utiliser MSBuild pour construire une solution avec une plate-forme cible (j'ai besoin de deux fichiers binaires x86 et x64). C'est de cette façon que je l'ai essayé:

C:\WINDOWS\Microsoft.NET\Framework\v3.5>MsBuild SolutionPath\Solution.sln /t:Rebuild /p:Configuration=Release /p:Platform="x86"

Cependant, la compilation échoue toujours si la plate-forme est différente de "any CPU". Ce que je fais mal?

EDIT: C'est le temps de sortie MSBuild impressions:

C:\WINDOWS\Microsoft.NET\Framework\v3.5>MsBuild SolutionPath\Solution.la sln /t:Reconstruire /p:Configuration=Libération /p:Plate-forme="x86" Microsoft (R) Construire La Version Du Moteur 3.5.30729.1 [Microsoft .NET Framework, Version 2.0.50727.3082] Copyright (C) Microsoft Corporation 2007. Tous les droits réservés.

Construire commencé 1.7.2010 8:28:10. Projet "SolutionPath\Solution.la sln", le nœud 0 (Reconstruire targe t(s)). SolutionPath\Solution.sln : erreur MSB4126: Le spécifié sol ution configuration "Release|x86" est non valide. Veuillez spécifier un valide la solution c onfiguration à l'aide de la Configuration de la Plateforme et des propriétés (par ex. MSBuild.exe Solution.la sln /p:Configuration=Debug /p:Plate-forme="Any CPU") ou laisser ces ina parties, vide pour utiliser la valeur par défaut la configuration de la solution. Fini De Le Construire Projet "SolutionPath\Solution.la sln" (Reconstruire cible(s)) -- ÉCHEC.

Construire ÉCHOUÉ.

"SolutionPath\Solution.la sln" (Reconstruire cible) (1) -> (ValidateSolutionConfiguration cible) -> SolutionPath\Solution.sln : erreur MSB4126: une s olution configuration "Release|x86" est non valide. Veuillez spécifier un valide la configuration de la solution à l'aide de la Configuration de la Plateforme et des propriétés (par exemple, MSBuild.ex e de la Solution.la sln /p:Configuration=Debug /p:Plate-forme="Any CPU") ou laisser ces pro perties vide pour utiliser la valeur par défaut la configuration de la solution.

0 Warning(s)
1 Error(s)

Temps Écoulé 00:00:00.03

Si j'essaie de le construire pour x86/x64 avec devenv il fonctionne parfaitement, cependant je suis en train de mettre en place un serveur de build sans installer toutes les versions de visual studio. Par ailleurs, si il y a un meilleur outil gratuit (qui prend en charge framework 4) là, j'aimerais en entendre parler.

111voto

Julien Hoarau Points 23987

Si vous voulez construire votre solution pour x86 et x64, votre solution doit être configuré pour les deux plate-forme. En fait vous avez juste un AnyCpu config.

Comment vérifier la configuration disponibles pour un projet

Pour vérifier la configuration disponibles pour un projet donné, ouvrez le fichier de projet (*.csproj par exemple) et pour un look PropertyGroup avec le droit Condition.

Si vous voulez construire en Release mode de x86, vous devez avoir dans votre fichier de projet, quelque chose comme ceci :

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
  ...
</PropertyGroup>

Comment créer et modifier la configuration de Visual Studio

Configuration Manager panel

New solution platform button

New solution platform panel

Comment créer et modifier la configuration (sur le site MSDN)

14voto

JJMpls Points 1160

Si vous essayez de le faire à partir de la ligne de commande, vous pouvez rencontrer un problème où une machine à l'échelle de la variable d'environnement 'de la Plate-forme est en cours de mise pour vous et travailler contre vous. Je peux reproduire ce que si j'utilise le VS2012 fenêtre de Commande au lieu d'un régulier de la fenêtre de Commande windows.

À l'invite de commande tapez:

jeu de plate-forme

Dans un VS2012 fenêtre de Commande, j'ai une valeur de "X 64" preset. Qui semble interférer avec ce qui est dans mon fichier de solution.

Dans une fenêtre de Commande, l'ensemble des résultats de commande dans une "variable non définie" message...ce qui est bon.

Si le résultat de votre " set " de commande ci-dessus ne retourne pas de valeur de variable d'environnement, vous devriez être bon d'aller.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X