Сделать решение Visual Studio для автоматической перезагрузки при изменении файлов проекта - PullRequest
29 голосов
/ 26 января 2011

В текущем проекте, над которым я работаю, на данный момент имеется большой отток кода, что означает, что обновление из системы контроля версий может иногда приводить к многочисленным изменениям файла csproj.Как мы все знаем, VS2010 не имеет кнопки «Перезагрузить все», но вы должны перезагрузить каждый проект и подтвердить каждую перезагрузку.

Есть ли метод, при котором либо проект автоматически перезагружается, либо IDE можетобнаружить это и попросить перезагрузить решение?

Ответы [ 4 ]

29 голосов
/ 04 февраля 2011

Наконец-то нашел решение:

http://lostechies.com/jimmybogard/2011/01/27/reloading-all-projects-with-vscommands/

Цитирование с сайта:

Довольно часто я обнаруживаю себя работающим в ситуациях, когда несколько проектовизменились, и Visual Studio просит перезагрузить их, по одному.Это происходит, когда я много работаю с управлением исходным кодом и выполняю такие вещи, как переключение веток, выполнение слияний или просто интеграция изменений в восходящем направлении.Я должен нажать «Перезагрузить» миллион раз для каждого проекта, который изменился на диске, и это довольно раздражает.Кроме того, VS забывает, какие файлы у меня открыты, поэтому каждый файл, над которым я работал, закрывается.

Возможно, я последний пользователь VS, узнавший об этом, но бесплатная облегченная версия VSCommands плагин доступен в галерее Visual Studio , который делает именно то, что мне нужно - перезагрузить все измененные проекты одновременно, сохранив, какие файлы у меня были открыты:

4 голосов
/ 26 января 2011

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

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

(На мой взгляд, реальный вопрос: почему он вообще задает этот вопрос ??? Если вы получаете последний исходный код, нет абсолютно никакой здравой причины, почему вы хотели бы использовать только его часть . Это похоже на бензозаправщика, который говорит: «Вы купили топливо. Хотите, чтобы я на самом деле положил его в вашу машину, или я просто вылью его на землю?»)

1 голос
/ 30 октября 2011

Ну, это не сработает, если ваши пути ссылок изменились в файле csproj, и вы используете что-то вроде инструмента sysinternals junction для изменения символической ссылки. Например. инструмент переключает символическую ссылку D: \ Projects с D: \ Baselines \ 1.0 \ Prjects на D: \ Baselines \ 2.0 \ Projects, и, поскольку кто-то изменил структуру папок между 1.0 и 2.0, ваш файл .csproj внезапно указывает путь к dll из .. .. \ References \ some.dll to .... \ References \ 3rd-Party \ some.dll. Я знаю, что это особый случай, но случается (например, в моей компании).

Тем не менее, существует альтернативное решение, которое я настоятельно рекомендую, поскольку оно имеет и другие преимущества: не очень известное расширение VS 2010 Solution Load Manager . Он откладывает загрузку проектов в фоновый режим или до тех пор, пока не будет загружен вручную, что значительно увеличивает время загрузки решения для больших файлов решений. В его меню есть кнопка «Перезагрузить решение» (к сожалению, здесь нет ярлыков), которая затем перезагружает все решения с нуля, пропуская / загружая фоновые решения, которые вы установили. Один парень из Microsoft прокомментировал в своем блоге, что хочет включить нечто похожее в VS 2010, но эта функция не совсем подходит.

Конечно, это может занять больше времени, чем «всего лишь» один клик и обновить 100 документов, но это решило мою проблему (относительного) изменения ссылочного пути и дает хороший прирост скорости каждый раз, когда я открываю решение хотя бы среднего размера.

Редактировать по состоянию на октябрь 2013 г. VS2012 включает эту функцию по умолчанию. По крайней мере, асинхронная загрузка. Функциональность «вообще не загружаться», к сожалению, возможна только при использовании ручного «разгрузить проект» в VS2012. Но так как потребление памяти pr-проекта действительно уменьшилось с VS2012, это уже не так уж важно.

0 голосов
/ 26 января 2011

Если вы отметили опцию «Обнаруживать, когда файл изменяется вне среды» в разделе «Документы» параметров, проекты и файлы перезагружаются при изменении. У меня работает при переключении веток в git.

VS option screenshot

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