Могу ли я настроить VisualStudio 2008 на постоянную сборку проекта запуска? - PullRequest
2 голосов
/ 19 августа 2008

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

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

Ответы [ 7 ]

5 голосов
/ 19 августа 2008

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


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

3 голосов
/ 19 августа 2008

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

2 голосов
/ 19 августа 2008

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

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

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

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

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

Джон.

2 голосов
/ 19 августа 2008

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

что-то вроде:

devenv project.csproj /clean
1 голос
/ 06 марта 2009

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

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

1 голос
/ 19 августа 2008

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

Джон.

0 голосов
/ 28 сентября 2010

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

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

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

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

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