Ich führe msbuild.exe
über Rake von einer normalen PowerShell-Konsole aus. Dies ist der Befehl, wie er bei einem Diagnose-Lauf ausgegeben wird
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" "D:/Projects/machine.specifications/Source/Machine.Specifications/Machine.Specifications.csproj31881140" /maxcpucount /target:Build /verbosity:diagnostic /property:Configuration=Debug /property:TrackFileAccess=false /property:BuildInParallel=false /property:BuildRunner=Rake
Und der Build schlägt fehl, weil msbuild x64
als Plattform
wählt.
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(483,9): error : Die OutputPath-Eigenschaft ist nicht für das Projekt 'Machine.Specifications.csproj37103470' festgelegt. Bitte überprüfen Sie, ob Sie eine gültige Kombination von Konfiguration und Plattform für dieses Projekt angegeben haben. Konfiguration='Debug' Plattform='X64'. Möglicherweise erhalten Sie diese Meldung, weil Sie versuchen, ein Projekt ohne Lösungsdatei zu erstellen und eine nicht standardmäßige Konfiguration oder Plattform angegeben haben, die für dieses Projekt nicht vorhanden ist.
Ich gebe das nicht über die Befehlszeile (oder vom Skript) ein. Das csproj
hat eine Standardkonfiguration
Debug
AnyCPU
und zwei spezifische Konfigurationen
Also habe ich erwartet, dass die Plattform AnyCPU
ausgewählt wird. Aber aus irgendeinem Grund wird etwas mit x64
ausgewählt oder übermittelt. Ich glaube nicht, dass das Rake-System hier ein Problem ist, ich habe dieses Verhalten bereits bei direkten Aufrufen von msbuild auf der Befehlszeile gesehen (aber ich habe sie nicht dokumentiert).
Ich verwende Windows 7 64-Bit, rufe msbuild 4.0 auf. Ich weiß nicht, ob das relevant ist.
Ich lade die 64-Bit Visual Studio-Tools (C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
) mithilfe von Invoke-BatchFile
in meinem PowerShell-Profil. Könnte das der Übeltäter sein?
Warum würde msbuild bewusst x64 wählen? Die 32-Bit-Version wählt nicht automatisch x86 für Sie aus.
*1: Die PowerShell-Konsole befindet sich unter %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
*2: Ich führe den MSpec-Build aus (hier ist das Rakefile und der msbuild-Aufruf)