Различное имя сборки для каждой цели платформы - PullRequest
5 голосов
/ 17 мая 2010

Мне нужно генерировать разные имена сборок в зависимости от цели платформы. Например, у меня есть консольное приложение "bob.exe". Вместо сборки для AnyCPU мне нужно собрать явно для x86 и x64 и, следовательно, хотеть «bob32.exe» и «bob64.exe». Вкладка «Приложение» в параметрах проекта Visual Studio 2010 отключает выпадающий список «Платформа». События сборки также не допускают опций для каждой платформы, поэтому впоследствии я не могу переименовать их очень легко.

Обновление: Ручное редактирование файла проекта, кажется, работает лучше всего, никакие дополнительные файлы не являются частью сборки, и у pdbs совпадающее имя.

Ответы [ 3 ]

10 голосов
/ 17 мая 2010

IDE не может справиться с этим, но msbuild.exe делает. Отредактируйте файл .csproj с помощью, скажем, Блокнота. Вы увидите четыре PropertyGroups для настроек x86 / x64 и Debug / Release. Первый имеет элемент <AssemblyName>. Скопируйте и вставьте его в другие 3 группы. И переименуйте их значение.

3 голосов
/ 17 мая 2010

Вы можете добавить событие Post-Built для копирования исполняемого файла, используя макрос $(PlatformName).

Вам нужно будет скопировать (не переименовывать), иначе отладчик не будет работать.

0 голосов
/ 02 июля 2018

Я пробовал решение @Hans Passant, но в моем случае оно не сработало.

Более того, мне нужно было выделить как Конфигурация , так и Платформа фрагментов информации в имени .EXE в сценарии с четырьмя вариантами построения:

  • 1) Отладка, x86
  • 1) Выпуск, x86
  • 1) Отладка, x64
  • 1) Выпуск, х64

Чтобы получить желаемый результат, я создал четыре элемента XML НА КОНЦЕ 1-го экземпляра <PropertyGroup> тега [тот, который содержит оба тега <ProjectGuid> и <OutputType>]:

    <AssemblyName Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">MyExe_Debug_x86</AssemblyName>
    <AssemblyName Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">MyExe_Release_x86</AssemblyName>
    <AssemblyName Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">MyExe_Debug_x64</AssemblyName>
    <AssemblyName Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">MyExe_Release_x64</AssemblyName>

Я тестировал это решение в двух разных проектах, работая с VS2013 и VS2017.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...