Остановить Visual Studio от запуска нового окна браузера при запуске отладки?

340

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

Есть ли способ остановить это поведение?

sker
источник
Включен ли просмотр вкладок? .. И вы используете IE?
Квинтин Робинсон

Ответы:

415

Откройте свойства вашего запускаемого проекта ( Project → {ProjectName} Properties ... в главном меню или щелкните правой кнопкой мыши ваш проект в обозревателе решений и выберите Properties ), затем перейдите на вкладку Web и в разделе Start Action выберите Не открывать страницу , Дождитесь запроса от внешнего приложения .

Вы по-прежнему сможете использовать любой браузер (или Fiddler, любой другой) для доступа к запущенному приложению, но оно не откроет окно браузера автоматически, оно просто запустится в фоновом режиме и будет ждать любых запросов.

Павел Краковяк
источник
Это кажется действительно хорошим решением, но, как и у Slace, оно не останавливает выполнение в точках останова, оно говорит, что символы не загружены. Спасибо хоть.
Скер
9
Оно делает. Я использую это для отладки все время. У вас должна быть неправильная конфигурация. Дважды проверьте, что у вас включена отладка в web.config и что вы запускаете сборку Debug.
Павел Краковяк
1
@mjohnsonengr Клянусь, это локальная настройка для каждого пользователя ... Возможно, у вас зарегистрирован файл .csproj.user (не следует).
Павел Краковяк
1
Так что это [местная обстановка]. Ранее я предполагал, что все настройки проекта в этой области были сохранены в команде csproj. Ранее я пытался изменить URL, который откроет браузер, изменив «URL проекта», и увидел, что он изменился в .csproj. При ближайшем рассмотрении я вижу, что есть галочка «Применить настройки сервера ко всем пользователям», которая контролирует только это поле. Виноват.
mjohnsonengr
4
Для Visual Studio на Mac сопоставимые параметры находятся в разделе «Проект> Параметры> Выполнить> По умолчанию> ASP.NET Core». Снимите флажок «Открыть URL-адрес в веб-браузере при запуске приложения».
IronRod
135

Для VS 15.7.1 ToolsOptionsProjects and SolutionsWeb Projects→ снять отметку Stop debugger when browser window is closed.

Memebot
источник
6
VS 15 - Visual Studio 2017 , кстати.
Уве Кейм
2
Предлагаемые изменения не делают то, о чем вопрос.
Анатольевич
1
Отлично работает в VS2019 (16.4.4)
Рори МакКроссан
75

Обновленный ответ для проекта .NET Core Web Api ...

Щелкните правой кнопкой мыши свой проект, выберите «Свойства», перейдите к «Отладка» и снимите флажок «Запустить браузер» (включен по умолчанию).

введите описание изображения здесь

Грег Р Тейлор
источник
1
@ Серый Где эта опция «Запустить браузер»?
Аюш Сингхания
Я обновил ответ: вам нужно перейти в свойства вашего проекта, чтобы перейти к опции.
CennoxX
44

В проекте ASP.Net 5 теперь это можно установить для каждого профиля запуска.

Откройте файл launchsettings.json в папке «Свойства запускаемого проекта» и добавьте "launchBrowser": falseв настраиваемый профиль, например, в:

"profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": false,
      "environmentVariables": {
        "Hosting:Environment": "Development"
      }
    }
}
Жоао Коста
источник
13

Этот обходной путь работает для меня для VS 2019

Инструменты => Параметры

Затем введите Projects and solutions в поле поиска.

Выберите Web Projects.

Затем отмените выбор опции ниже.

Остановите отладчик, когда окно браузера закрыто, закройте браузер, когда отладка остановлена.

Это работает для меня. Надеюсь, это поможет.

hackerbuddy
источник
1
Спасибо за этот совет.
Победитель
Он по-прежнему открывает новую вкладку каждый раз, когда я начинаю отладку.
подражать
12

Вы можете использовать функцию «Присоединить к процессу» вместо нажатия F5.

Это также может позволить вам перемещаться по известным рабочим разделам без замедления загрузки отладчика VS.

Аарон Пауэлл
источник
Я пробовал это, но он не остановит выполнение, когда найдет точку останова. Мне нужно, чтобы он остановился на контрольных точках, есть ли способ включить это? Спасибо.
Скер
1
при условии, что вы подключены к процессу, который загрузил точно такие же сборки, которые находятся в папке / bin / приложения, все точки останова будут работать (о, и при условии, что есть файлы .pdb!)
Аарон Пауэлл,
Я погуглил, как это исправить, но мне кажется, что это большая проблема. Я не мог заставить его работать. Тем временем я воспользуюсь решением «У меня есть шляпа». Спасибо.
скер
Я могу отладить, нажав F5 с опцией «ждать запроса от внешнего приложения», но я не могу заставить работать Attach To Process (присоединение к INetMgr.exe). Никогда не останавливается в точке останова. Я использовал VSCommands в VS 2013, но новая версия VSCommands 2015 года пока не поддерживает «Присоединение к IIS». Хотел бы я знать, в чем проблема.
ErikE
12

Я решил свою проблему, выполнив следующие шаги. Перейдите в Инструменты >> Выберите параметры >> щелкните проекты и решения >> веб-проекты >> снимите флажок «Остановить отладку при закрытом браузере»введите описание изображения здесь

ДКР
источник
Лучшее решение, помогшее для моего основного проекта .net
V319
недооцененный ответ
Bimal Das
9

Когда вы впервые открываете проект веб / приложения, выполните Ctrl- F5, который является ярлыком для запуска приложения без отладки. Затем, когда вы впоследствии нажмете F5и запустите отладчик, он будет использовать этот экземпляр IE. Затем остановите и начните отладку в Visual Studio вместо закрытия IE.

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

Firefox также останется открытым, поэтому вы можете отлаживать их одновременно или одновременно.

Рекс Миллер
источник
Эй, это работает! Большое спасибо. Теперь я могу избежать около 100 дополнительных окон за сеанс кодирования. Кроме того, когда я нажимаю F5 VS изменяет размер окна IE. Вы знаете, как я могу избежать этого?
Скер
Извините, скер, я не знаю ответа на этот вопрос, хотя я не делаю вышеизложенное, поэтому, возможно, где-то есть ответ. Может быть, IE помнит размер своего окна, и это не связано со сценарием отладки?
Рекс Миллер
7

Кажется, есть один случай, в котором ничего из вышеперечисленного, кроме следующего, не помогает. Я занимаюсь разработкой проекта для облачной платформы Windows Azure, и у меня есть веб-роль. Действительно, есть переключатель « Не открывать страницу» в свойствах проекта -> {Имя проекта} ..., как указал Павел Краковяк, но в моем случае это никак не отразилось. Однако в обозревателе решений есть основной облачный проект, а под ним - папка Roles . Если я щелкну правой кнопкой мыши свою веб-роль в этой папке и выберу « Свойства» , я получу другой набор настроек, и на вкладке « Конфигурация » появится флаг « Запустить браузер для запуска» , после снятия флажка которого новое окно браузера не открывается при запуске приложения.

stepank
источник
6

Поскольку у меня не было упомянутой опции в моей VS, то есть Visual Studio Enterprise 2017, мне пришлось искать какую-то другую опцию.

Вот что я нашел:

Перейдите в Сервис -> Параметры -> вкладка Отладка (Общие) и снимите флажок «Включить отладку JavaScript для Asp.Net (Chrome и IE).

введите описание изображения здесь

Алекса Адриан
источник
5

Жоао Коста ответ также справедлив для проектов .Net Core 2.

launchsettings.json -> "launchBrowser": false

"profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": false,
      "environmentVariables": {
        "Hosting:Environment": "Development"
      }
    }
}
chri3g91
источник
1
Это было очень полезно. Стоит отметить, что этот launchSettings.json скрыт в разделе «Свойства» в «Обозревателе решений»
netpoetica
2

Я просмотрел ответы и не увидел упомянутого решения. Если это так, мои извинения. В моем случае в настоящее время используется Visual Studio 2015. В обозревателе решений щелкните правой кнопкой мыши файл проекта и выберите Свойства. Перейдите на вкладку «Отладка», и там должна быть информация о том, как вы запускаете «IIS Express или Web (DNX)» для первых двух выпадающих меню, а затем должен быть флажок «Launch URL:». Снимите этот флажок, и ваш браузер не будет автоматически запускаться каждый раз при отладке приложения. Надеюсь, это поможет кому-то.

Коди Гаут
источник
2

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

До того, как я пришел к этому решению, я продолжал смотреть bindingInformationв applicationhost.config решения, неутомимо ища любой намек на то, почему все просто не работает.

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

Поэтому, кроме Project > {Project-Name} Properties... > Web > Start Actionмоего внутреннего проекта, мне также пришлось перейти Website > Start Options... > Start Actionна мой внешний интерфейс. Оказавшись там, я выбрал Don't open a page. Wait for a request from an external applicationи был счастлив с тех пор!

Настройки бэкэнда Настройки внешнего интерфейса

Сиддхант Римал
источник
2

Вы можете щелкнуть правой кнопкой мыши на вашем проекте, затем выбрать Properties, на Debugвкладке вы должны снять launch browserфлажок.

Siavash
источник
0

Теперь вы также можете получить доступ к веб-свойствам, щелкнув стрелку раскрывающегося списка рядом с кнопкой «Выполнить»!

  1. Нажмите на выпадающую кнопку рядом с «Выполнить»
  2. {Имя проекта} Свойства
  3. Нажмите «Веб» в списке слева
  4. В сегменте «Начать действие» нажмите Не открывать страницу.

Вы все готово!

PS: это работает для меня, я на версии 16.5.5 VS Professional 2019 :)

Лукас Кляйн Ханевельд
источник