Я хочу создать две конфигурации одновременно для проекта. Скажем так, когда я хочу собрать версию выпуска, но хочу собрать даже отладочную версию (обратное неверно).
Начиная с Использовать одно решение Visual Studio для одновременной сборки x86 и x64? Я пытался добавить в .csproj:
<Target Name="AfterBuild">
<MSBuild Condition=" '$(Configuration)' == 'Release' " Projects="$(MSBuildProjectFile)" Properties="Configuration=Debug" RunEachTargetSeparately="true" />
</Target>
А если я попытаюсь собрать проект через MSBuild,
MSBuild ConsoleApplication64.csproj /p:Configuration=Release /p:Platform=x86
работает правильно. Две конфигурации построены правильно, и все хорошо.
Проблема заключается в том, что если я пытаюсь собрать его с помощью Visual Studio: выпускная версия создается правильно, а затем начинается сборка отладочной версии, и это дает мне:
Копирование файла из «obj \ x86 \ Debug \ ConsoleApplication64.exe» в «bin \ Debug \ ConsoleApplication64».
c: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (2868,9): ошибка MSB3021: невозможно скопировать файл "obj \ x86 \ Debug \ ConsoleApplication64.exe" в "bin \ Debug \" ConsoleApplication64.exe». Не удалось найти файл 'obj \ x86 \ Debug \ ConsoleApplication64.exe'.
Предварительные условия:
- Windows XP SP3 ITA
- Visual Studio 2010 SP1 Английский
- Проект представляет собой пустое консольное приложение для C # 4.0 (технически это не так, но я могу воспроизвести проблему с этим).
(Обратите внимание, что для получения этих сообщений я активировал многословие: обычное в меню Инструменты → Параметры → Проекты и решения → Сборка и запустите → Детализация вывода сборки проекта MSBuild .
После сравнения выходных данных двух «половинных» прогонов разница в том, что в «рабочей» половине вызывается исполняемый файл csc
, а в другой - нет:
Выпускная половина:
Задача "Csc" (TaskId: 13)
c: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Csc.exe / noconfig
/ nowarn: 1701,1702 / nostdlib + / платформа: x86 / errorreport: приглашение / предупреждение: 4
/ определить: TRACE / ссылка: "C: \ Programmi \ Ссылка
Сборки \ Microsoft \ Framework.NETFramework \ v4.0 \ Профиль \ Client \ Microsoft.CSharp.dll»
/ Ссылка: "C: \ Programmi \ Reference
Сборки \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ mscorlib.dll»
/ Ссылка: "C: \ Programmi \ Reference
Сборки \ Microsoft \ Framework.NETFramework \ v4.0 \ Профиль \ Client \ System.Core.dll»
/ Ссылка: "C: \ Programmi \ Reference
Сборки \ Microsoft \ Framework.NETFramework \ v4.0 \ Профиль \ Client \ System.dll»
/ debug: pdbonly / filealign: 512 / optimize +
/out:obj\x86\Release\ConsoleApplication64.exe / target: exe Program.cs
Свойства \ AssemblyInfo.cs "C: \ Documents and
Настройки \ m.alberti минусы \ Impostazioni
Весь местный \ Temp.NETFramework, Version = v4.0, профиль = Client.AssemblyAttributes.cs»
(TaskId: 13) Завершено выполнение задачи "Csc". (TaskId: 13) * 1 049 *
Отладочная половина:
Задача "Csc" (TaskId: 41)
Выполнено выполнение задания "Csc". (TaskId: 41)
После еще нескольких тестов я заметил, что если две половины используют один и тот же DefineConstants
, то нет никаких проблем, и все работает, но если они отличаются (как в release / debug), то это не так Работа. : - (