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