Могу ли я настроить VisualStudio 2008 на постоянную сборку проекта запуска?

У меня есть решение с несколькими проектами, где у запускающего проекта есть событие после сборки, которое выполняет все копирование «подключаемых» проектов и другие организационные задачи. После обновления решения с VS 2005 до VS 2008 создается впечатление, что событие после сборки запускается, только если я изменяю проект запуска, а это означает, что мои обновленные плагины не подключаются к текущему сеансу отладки. Это имеет смысл, но похоже на изменение в поведении. Кто-нибудь еще замечает изменение поведения в отношении того, какие проекты создаются?

Кто-нибудь знает обходной путь, который я могу использовать, чтобы заставить проект запуска перестраиваться всякий раз, когда я нажимаю F5? Возможно, я так давно настроил VS 2005 на работу, что забыл об этом ...

19.08.2008 04:13:07
7 ОТВЕТОВ
РЕШЕНИЕ

Почему бы просто не добавить зависимость к проекту запуска для каждого из плагинов? Это заставит проект быть перестроен, если какие-либо другие изменится, и вам не придется возиться с любыми другими событиями до / после сборки.

3
19.08.2008 04:51:16

Я не знаю, является ли это правильным способом сделать это, но вы могли бы добавить событие prebuild в ваш стартовый проект (если он статический), чтобы очистить проект, что приведет к перестройке.

что-то типа:

devenv project.csproj /clean
2
19.08.2008 04:32:12

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


IMO, другие предложения - нет, поскольку они обойдут умение компилятора знать, когда перестройка необходима для основного проекта. И, следовательно, убивает любую компиляцию, экономя время. Если ваши проекты «плагинов» являются сборками (а не просто ссылками на проекты из основного проекта), вам не нужно перестраивать основной проект каждый раз, когда плагин перестраивается. Новая сборка будет выбрана в процесс / отладчик без основного проекта, нуждающегося в перестройке.

5
19.08.2008 06:24:42

Это боль. Что нам действительно нужно, так это чтобы Microsoft позволила нам подключиться к мероприятию Post-Solution Build. Вы можете сделать это с помощью макросов, но это слишком сложно.

Я предполагаю, что это проект C ++, потому что у меня нет этой проблемы с C #.

Это мое решение, оно не элегантно, но работает:

  • Создайте новый проект, единственная цель которого - запустить скрипт после сборки. Отметьте его как зависимый от любого другого проекта в решении.
  • Добавьте в этот проект фиктивный файл с именем dummy.h или чем-то еще.
  • Щелкните правой кнопкой мыши dummy.h в обозревателе решений и выберите «Свойства».
  • Выберите «Custom Build Step».
  • Для командной строки введите «echo» и «Outputs» просто введите «dummy» или что-то еще, что никогда не будет существовать.

Этот проект и, следовательно, сценарий после сборки теперь будут выполняться при каждой сборке.

Джон.

2
19.08.2008 12:12:43

flipdoubt: это проекты, созданные изначально в 2008 году. Я предлагаю, если C # не работает, посмотреть вкладку «Build Events» и проверить настройку выпадающего «Запустить событие после сборки:». Если для него установлено значение «Когда сборка обновляет выходные данные проекта», это может быть вашей проблемой, попробуйте установить «При успешной сборке».

Джон.

1
19.08.2008 12:49:46

У меня та же проблема, и это ОЧЕНЬ раздражает. Джон Ричардсон прав в том, что должно быть событие Пост-Решения Построения (и событие Пост-Решения Построения), которое применяется всякий раз, когда ЛЮБОЙ проект в решении строится.

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

1
6.03.2009 17:41:35

Начиная с @lomaxx предложений, я получил очень похожую настройку рабочего, добавив следующую строку в конце этого после сборки события проекта запуска:

"$(DevEnvDir)devenv.exe" "$(ProjectPath)" /clean

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

PS. Сначала я попытался выполнить предварительную сборку, как было предложено, но это не сработало (и я думаю, что это имеет смысл - если VS считает, что проект не нуждается в сборке, он не будет выполнять никаких событий для этого проекта).

0
28.09.2010 16:04:27