У меня есть решение, которое содержит два C++ и два проекта С#. Для решения у меня есть конфигурация Win32, которая имеет два файла C++ как Win32
и два файла С# как AnyCPU
. Решение x64 имеет C++ как x64
и С# как AnyCPU
.
Для решения Win32 файлы C++ строятся в папке /x86/Release/
, и я установил файлы С# для вывода в одну и ту же папку. Однако, поскольку он установлен в AnyCPU
, решение x64 также имеет выход С# в /x84/Release/
.
Я надеялся, что в VS2012 будет какой-то макрос, который позволит мне выбрать конфигурацию решения, чтобы я мог установить вывод в $(SolnConfig)/Release
, но похоже, что ничего подобного не было.
Можно ли каким-либо образом (относительно) напрямую установить вывод для AnyCPU
в x86 и x64 каталоги для соответствующих решений?
Похоже, есть три настройки платформы: платформа решений, платформа проекта и платформа. Я пытался установить AnyCPU с уровня Project Platform, что вызвало смешение для того, чтобы иметь одинаковый выходной каталог для Win32 и x64 на уровне платформы решений.
Ответ. Установите платформу решений на платформу Win32 и платформу проекта на x86 из диспетчера конфигурации и установите Platform Target для файлов С# в AnyCPU из свойств проекта. Повторите для x64.
Вы можете создать настраиваемую конфигурацию и определить отдельные выходные каталоги для каждого проекта в этой конфигурации. Посмотрите здесь, чтобы узнать, как его настроить.
Затем вы можете создать пакетный файл, который поместит бункеры в соответствии с определенной пользовательской логикой:
set msBuildExe=%WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
set configName=%1
set pluginReportsDir=..\..\..\..\Wcf\Plugins\PluginReports
echo ---
echo Backup common PluginReports reports
rem Since this is a post build event, the Common PluginReports is already built
echo ---------------------------
robocopy %pluginReportsDir%\bin\%configName%\ %pluginReportsDir%\bin\ PluginReports.dll PluginReports.pdb
echo ---
echo PluginReports for Site 3
echo ---------------------------
call %msBuildExe% %pluginReportsDir%\PluginReports.csproj /p:Configuration=%configName%Plugins_Site3 /t:Rebuild /noconsolelogger
move /y %pluginReportsDir%\bin\%configName%\PluginReports.dll %pluginReportsDir%\bin\PluginReports_Site3.dll
move /y %pluginReportsDir%\bin\%configName%\PluginReports.pdb %pluginReportsDir%\bin\PluginReports_Site3.pdb
Укажите командный файл как событие post build, и он скопирует файлы. Он может также выполнять над сборками, если это необходимо.