Расширение Visual Studio для перенаправления выходных файлов в указанную папку - PullRequest
0 голосов
/ 14 февраля 2012

Обычно Visual Studio помещает выходные файлы в bin / debug или bin / release.

Когда решение содержит большое количество проектов, нелегко изменить каждый вывод проекта вручную.

Также редактирование в файлах csproj нежелательно, поскольку некоторые из них используются совместно решениями.

Мои вопросы: кто-нибудь знает инструмент, который может быстро настроить путь вывода?

ОБНОВЛЕНИЕ: моя проблема решена с помощью TFS Build

Ответы [ 2 ]

2 голосов
/ 25 апреля 2013

Настройте свой проект, используя свойства msbuild, которые вы можете сделать, выполнив следующие действия:

Перейдите в обозреватель решений и выгрузите один проект, щелкнув по нему правой кнопкой мыши и выбрав «Выгрузить проект».

Затем снова щелкните правой кнопкой мыши на незагруженном проекте и выберите «Редактировать проект».Это откроет определение XML вашего проекта, и вы получите intellisense для макета, который поможет вам выполнить следующие шаги.

В редакторе Visual Studio найдите первый тег PropertyGroup и добавьте эти строки рядом или в конце закрывающего тега PropertyGroup:

<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
<BuildDirectory Condition="$(BuildDirectory) =='' or $(BuildDirectory) == '*Undefined*'">$(SolutionDir)\build\</BuildDirectory>

Указанный выше SolutionDir определен в свойствах msbuild, которые выможно получить с помощью этого ответа: сценарий msbuild с использованием информации о решении , а также проверить хорошо известные свойства msbuild здесь

Следующим шагом является поиск тега OutputPath для каждогонастройте и отредактируйте его так:

<OutputPath>$(BuildDirectory)\x86\AutomatedDebug\</OutputPath>

В приведенном выше примере предполагается, что у вас есть конфигурация с именем AutomatedDebug с платформой назначения x86.

Вывод будет

x:\projects\whereever-your-solution-is\build\x86\AutomatedDebug\

Повторите для каждого проекта.

Чтобы выгрузить более одного проекта, сверните все проекты в обозревателе решений и нажмите клавишу Ctrl или Ctrl, чтобы выбрать все или некоторые проекты, затем щелкните правой кнопкой мыши выбранную группу, чтобы выгрузить, к сожалению, вы не можете сделать это для редактирования.По крайней мере, в Visual Studio 2010.

Я первый, кто признает, что это несколько затруднительно для существующих проектов, но вы можете легко создать шаблон проекта Visual Studio, в котором эти параметры были изменены, чтобы новые проектыбудет использовать более удобный каталог вывода по умолчанию.

Вы не можете редактировать выходной каталог непосредственно в Visual Studio, поскольку редактор свойств проекта экранирует любой текст, заключенный в $ ().

Также вы можете изменять только OutputPath, используя имя системной переменной среды, заключенное в $ ().Последний вариант - включить глобальный выходной каталог.

Если вы строите какой-либо один проект, модифицированный таким образом, с использованием msbuild непосредственно в командной строке, выходной каталог будет создан на один каталог выше, из которого вы запускали msbuild

..\build\x86\AutomatedDebug

Если вы в команде, вы должны предупредить их, чтобы они не редактировали выходной каталог вручную, так как это действие перезапишет любую настройку.

Надеюсь, эта информация полезна.Привет.

1 голос
/ 14 февраля 2012

Предположительно, у вас есть хотя бы один проект в каждом решении, который уникален для этого решения. В событии Post-Build этого скопируйте содержимое вывода каждого проекта в требуемое место.

Мы часто к этому используем командный файл. Это грубо, но эффективно. В нашем проекте, который уникален для решения, мы создаем файл Release.bat. Он содержит несколько копий файлов для копирования всех необходимых компонентов из различных выходных каталогов других проектов. Затем вы можете просто запустить командный файл в событии после сборки. Мы обычно копируем все в фодлер «Последний выпуск» при создании решения. Если это станет правильным выпуском, мы переименуем папку «Последний выпуск» в фактический номер выпуска.

Если у вас несколько конфигураций сборки или вы просто используете конфигурации Debug и Release, вы можете использовать оператор If в событии Post-Build, чтобы решить, какой пакетный файл запустить. Таким образом, вы можете создать Debug.bat, Release.bat и т. Д., Которые будут делать то, что вам нужно. Поначалу может быть утомительно их настраивать и правильно работать, но после полной реализации они очень полезны.

...