Я запускаю msbuild.exe
через Rake из обычной консоли PowerShell. Это команда, напечатанная с диагностического уровня
"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/свойство: BuildRunner = Rake
И сборка не работает, потому что msbuild выбирает x64
как Platform
.
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(483,9): ошибка: свойство OutputPath не задано для проекта 'Machine.Specifications.csproj37103470'. Убедитесь, что вы указали правильную комбинацию конфигурации и платформы для этого проекта. Конфигурация = 'Отладка' Платформа = 'X64'. Вы можете увидеть это сообщение, потому что пытаетесь создать проект без файла решения и указали конфигурацию или платформу, отличную от по умолчанию, которая не существует для этого проекта.
Я не передаю его в командной строке (или из script). csproj
имеет конфигурацию по умолчанию
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
и две конкретные конфигурации
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
Итак, я ожидал, что платформа AnyCPU
будет выбрана. Но по какой-то причине что-то выбирает или отправляет в x64
. Я не думаю, что система Rake является проблемой здесь, я видел это поведение раньше, чем на сырые вызовы cmd в msbuild (но я их не документировал).
Я на 64-битной Windows 7, вызывая msbuild 4.0. Я не знаю, действительно ли это.
Я загружает 64-разрядные инструменты Visual Studio (C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
) с помощью Invoke-BatchFile
в моем профиле PowerShell. Может ли это быть виновником?
Почему msbuild преднамеренно выбирает x64? 32-разрядная версия не выбирает x86 для вас.
* 1: консоль PowerShell находится в %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
* 2: Я запускаю MSpec build (здесь rakefile и вызов msbuild)