Почему командная строка devenv и графический интерфейс Visual Studio не создают одно и то же решение? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть решение под названием MainWindow.vs2015.sln для моего приложения. В нем содержится около 100 проектов, и он прекрасно собирается в Visual Studio 2015. Когда я собираю решение из командной строки с использованием devenv, оно также отлично работает и ошибок нет.

Однако, когда я собираю из командной строки, а затем открываю Visual Studio 2015 и собираю ее снова, ожидая почти мгновенную сборку, как я уже собрал из командной строки, он собирает все зановои я просидел там почти 30 минут, ожидая, когда что-то снова будет построено.

Есть ли какая-то разница между командой devenv и сборками Visual Studio?

PS У меня также есть MSBuild и devenv, и у меня была такая же проблема.

devenv MainWindow.vs2015.sln /Build "Debug ALL"

1 Ответ

0 голосов
/ 29 октября 2019

Какой у тебя тип проекта? VB.net, C # или C ++?

Для .net проектов :

Если мы создаем новый проект C2015 C # в командной строке, создайте его в Debug+x64 комбинация. После этого при открытии проекта в IDE и его сборке будет отображаться Up-To-Date, и он не будет компилироваться и компилироваться снова, поскольку ничего не меняется.

Так что если вы встретите проблему build twice в C #проекты, установите подробность Build Output на Detailed или выше в VS, чтобы увидеть подробную информацию о процессе сборки.

После этого, когда вы снова столкнетесь с этой проблемой, попробуйте прочитать самый первый из журнала, чтобы увидеть причину, почему VS строит его снова! Проверьте, отсутствуют ли какие-либо файлы или установлен параметр «Копировать всегда», например this .

Для C++ проектов:

Если вы находитесь врешение со многими проектами C ++ в нем. Боюсь, ответ может быть отрицательным. Я тестирую его в проектах C2015 C ++ и могу воспроизвести ту же проблему. Я нашел, если мы создадим проект C ++, соберем его в командной строке, а затем VS. VS посчитает, что он не обновлен, и попытается построить его снова ...

Что-то интересное, если мы создадим его не из командной строки, а вместо этого дважды в VS, то VS можетузнайте, что он обновлен до даты и не будет тратить время на его сборку во второй раз.

Поэтому я предлагаю вам избежать сборки в командной строке перед сборкой в ​​VS. Потому что нет никакого преимущества в том, что мы строим проект двумя способами, в то время как мы фактически не изменяем исходные файлы. Кроме того, поскольку есть кое-что, что можно улучшить в проверке обновлений в VS для проектов C ++, вы можете опубликовать feature request в DC и получить помощь от группы разработчиков.

Вдополнение: пожалуйста, убедитесь, что конфигурация + платформа, которую вы используете для построения решения в командной строке, одинаковы при сборке в VS IDE.

Надеюсь, что это поможет:)

...