Я запускаю 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 / подробность: диагностика / свойство: Configuration = Debug / свойство: TrackFileAccess = false / свойство: BuildInParallel = false / свойство: BuildRunner = Rake
И сборка не удалась, потому что msbuild выбирает x64
как Platform
.
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (483,9): ошибка: свойство OutputPath не задано для проекта «Machine.Specifications.csproj37103470». Пожалуйста, убедитесь, что вы указали правильную комбинацию конфигурации и платформы для этого проекта. Configuration = 'Debug' Platform = 'X64' . Возможно, вы видите это сообщение, потому что вы пытаетесь построить проект без файла решения и указали нестандартную конфигурацию или платформу, которые не существуют для этого проекта.
Я не передаю его в командной строке (или из скрипта). 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 является проблемой здесь, я уже видел такое поведение ранее при вызовах строки raw 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 (вот этот rakefile и msbuild call )