Как Или почему MSBuild выбирает платформу x64, когда я не указываю ее вместо AnyCPU?
Я msbuild.exe
via Rake из обычной консоли PowerShell. Это команда, напечатанная с диагностического уровня run
"C:WindowsMicrosoft.NETFrameworkv4.0.30319msbuild.exe "" D:/Projects/machine - ... технические характеристики / источник / машина.Технические Характеристики / Машина.Технические характеристики.csproj31881140 " / maxcpucount / цель: сборка / детализация: диагностика / свойство: конфигурация=отладка / свойство: TrackFileAccess=false /свойство:BuildInParallel=false / свойство: BuildRunner=Rake
и сборка терпит неудачу, потому что msbuild выбирает x64
как Platform
.
C:WindowsMicrosoft.NETFrameworkv4.0.30319Microsoft.Common.targets (483,9): ошибка : свойство OutputPath не задано для машины проекта.Технические характеристики.csproj37103470'. Убедитесь, что вы указали допустимое сочетание конфигурации и платформы для данного проекта. Configuration= 'Debug' Platform= 'X64'. Возможно, вы видите это сообщение, потому что пытаетесь построить проект Без файла решения и указали конфигурацию или платформу, не существующую по умолчанию для этого проекта.
Я не передаю его в командной строке (или из сценария). The 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 line вызовы msbuild (но я не документировал их).
Я на 64-разрядной Windows 7, вызывая msbuild 4.0. Не знаю, относится ли это к делу.
Я загрузка 64-разрядные средства Visual Studio (C:Program Files (x86)Microsoft Visual Studio 10.0VCbinamd64
) через Invoke-BatchFile
в моем профиле PowerShell. Может быть виновница?
почему msbuild намеренно выбирает x64 в любом случае? 32-разрядная версия не выбирает x86 для вас.
*1: консоль PowerShell находится в %SystemRoot%system32WindowsPowerShellv1.0powershell.exe
*2: я запускаю MSpec build (вот Rakefile с и msbuild вызов)
1 ответов
при запуске командного окна Visual Studio x64 устанавливается переменная среды:
Platform=X64
это отличие от 32-битного командного окна, где эта переменная среды не определена, и MSBuild затем использует условную логику для использования платформы по умолчанию.
можно либо удалить переменную среды платформы в пакетном файле, либо передать явное свойство платформы в качестве параметра MSBuild.