Как создать пользовательское чистое (пост-чистое) событие в Visual Studio 2008? - PullRequest
18 голосов
/ 10 марта 2009

В нашем процессе сборки для каждого проекта мы используем события Post Build для копирования наших исполняемых файлов в отдельный каталог развертывания. Это работает просто замечательно, но проблема в том, что у нас возникают проблемы с устаревшими файлами после выполнения Чистого решения / Чистого проекта. Я хотел бы настроить событие «Очистить», которое удаляет скопированный файл, и Visual Studio 2008, похоже, не предоставляет параметр на странице свойств проекта.

Имеет:

Build Events:
   Pre-Build Event
   Pre-Link Event
   Post-Build Event
Custom Build Step
   General

Я хотел бы найти способ выполнить произвольную командную строку при очистке проекта.

Ответы [ 6 ]

32 голосов
/ 18 октября 2010

Вы можете использовать целевой синтаксис MSBuild в вашем файле csproj. * 1001 например *

  <Target Name="AfterClean">
    <Delete Files="$(OutDir)\$(TargetName).exe" ContinueOnError="true" />
  </Target>

Существует удобный способ редактирования файла .csproj непосредственно в среде IDE Visual Studio, описанный в блоге команды MSBuild, но это мой первый пост, поэтому я могу включить только одну гиперссылку. (кратко: выгрузите проект, затем щелкните правой кнопкой мыши по нему, чтобы увидеть запись "Edit [project] .csproj" ... ваш csproj появится в IDE как XML-файл с intellisense для элементов и атрибутов. Замечательно!)

Полный список пользовательских целей находится здесь: http://blogs.msdn.com/b/msbuild/archive/2005/11/23/496396.aspx

8 голосов
/ 10 августа 2010

Для проектов Visual C ++ необходимо добавить файлы в раздел «Расширения для удаления при чистке» в свойствах конфигурации проекта «Общие». Несмотря на то, что он утверждает, что хочет расширения, он на самом деле использует globs и с радостью принимает полные пути и расширяет переменные MSBuild. Это сработало для меня:

$(ProjectDir)\deployment\*.*

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

3 голосов
/ 27 марта 2014

Если вы используете «Свойства проекта -> Свойства конфигурации -> Настраиваемая сборка», вы должны не забыть заполнить поле «Выходы», в противном случае оно не запустится.

от

http://blogs.msdn.com/b/visualstudio/archive/2010/04/26/custom-build-steps-tools-and-events.aspx

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

1 голос
/ 11 марта 2009

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

Из MSDN, вот порядок вызова для различных этапов сборки:

  1. Событие перед сборкой
  2. Пользовательские шаги сборки для отдельных файлов
  3. Генератор прокси
  4. MIDL
  5. Ресурсный компилятор
  6. Компилятор C / C ++
  7. Событие предварительной ссылки
  8. Линкер или библиотекарь (в зависимости от обстоятельств)
  9. BSCMake
  10. Пользовательский этап сборки проекта
  11. Средство развертывания.
  12. Событие после сборки

    MSDN: Общие сведения о пользовательских этапах сборки

1 голос
/ 10 марта 2009

Вам нужно будет вручную отредактировать файлы .csproj и добавить цель «AfterClean».

0 голосов
/ 17 ноября 2011

Остальные делали не то, что я хотел, и я просто нашел лучший способ. Протестировано в VS2010 для проекта C32 Win32, перейдите в Свойства проекта -> Свойства конфигурации -> Настройка пользовательской сборки. Вы можете добавить пользовательскую командную строку и сообщить VS, какую операцию выполнять до или после.

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