Comment ou pourquoi MSBuild choisit-il la plateforme x64 alors que je ne la spécifie pas à la place de AnyCPU?
Je suis en cours d'exécution msbuild.exe
via Râteau à partir d'une console PowerShell. C'est la commande imprimé à partir d'un niveau de diagnostic exécuter
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" "D:/Projects/machine.specifications/Source/Machine.Specifications/Machine.Specifications.csproj31881140" /maxcpucount /objectif:Construire /verbosité:diagnostic /propriété:Configuration=Debug /propriété:TrackFileAccess=false /propriété:BuildInParallel=false /propriété:BuildRunner=Râteau
Et le build échoue parce que msbuild est la cueillette x64
comme le Platform
.
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(483,9): erreur : Le OutputPath propriété n'est pas définie pour le projet de la Machine.Les spécifications.csproj37103470'. Vérifiez que vous avez spécifié une combinaison valide de la Configuration et de la Plate-forme pour ce projet. De Configuration='Debug' Platform='X 64'. Vous pouvez voir ce message, car vous êtes en train de construire un projet sans un fichier de solution, et les valeurs de Configuration par défaut ou une Plate-forme qui n'existe pas pour ce projet.
Je ne suis pas de la passer sur la ligne de commande (ou le script). Le csproj
a une configuration par défaut
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
et deux configurations spécifiques
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
Donc, je m'attendais à la AnyCPU
plate-forme pour être sélectionné. Mais, pour une raison quelconque, quelque chose est la cueillette ou de l'envoyer dans x64
. Je ne pense pas que le Râteau du système est un problème ici, j'ai vu ce problème avant sur les matières premières en ligne de cmd appels à msbuild (mais je n'ai pas documenté).
Je suis sur une version 64 bits de Windows 7, en appelant msbuild 4.0. Je ne sais pas si c'est pertinent.
Je suis chargement la version 64 bits de Visual Studio tools (C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
) à l'aide de Invoke-BatchFile
dans mon PowerShell profil. Pourrait-il être le coupable?
Pourquoi msbuild choisir délibérément x64 de toute façon? La version 32 bits ne choisit pas x86 pour vous.
*1: La console PowerShell est à %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
*2: je suis l'exécution du MSpec construire (voici le rakefile et la msbuild appel)
source d'informationauteur Anthony Mastrean
Vous devez vous connecter pour publier un commentaire.
Lorsque vous lancez Visual Studio x64 fenêtre de commande, il définit une variable d'environnement :
C'est une différence à partir de la 32 bits de commande de la fenêtre, où cette variable d'environnement n'est pas définie, et MSBuild utilise ensuite la logique conditionnelle pour utiliser la valeur par défaut de la plateforme.
Vous pouvez soit retirer la Plate-forme de variables d'environnement dans un fichier batch, ou passer explicite Plate-forme de propriété en tant que paramètre à MSBuild.