Как отключить профиль запуска IIS Express для ASP.NET Core?

Я пишу приложение ASP.NET Core (на полной платформе .NET Framework), которое использует WebListener, а не Kestrel. ¹ Я использую Visual Studio 2015 с Update 3 и ".NET Core 1.0.1 tools Preview 2" (последняя инструментария VS на загружать сайт на момент написания этой статьи).

Поскольку я использую WebListener, и потому что WebListener не совместим с IIS Express, я бы хотел отключить запуск "IIS Express" профиль в Visual Studio, так что, когда мои товарищи по команде откроют это решение, их Visual Studios по умолчанию будет запускать консольное приложение вместо IIS Express, и они смогут просто нажать Run и не получить ошибки.

Но до сих пор я не смог избавить VS от профиля запуска "IIS Express" . Вкладка "Свойства проекта" > "Отладка" позволяет мне редактировать список профилей, но когда я выбираю профиль "IIS Express" , кнопка "Удалить" отключена. Если я сразу же отредактирую файл launchSettings.json и удалю элемент "IIS Express" из "профилей", операция "Файл" > "Сохранить" автоматически добавит профиль "IIS Express" обратно в JSON, который он сохранит на диске!

По-видимому, Microsoft действительно хочет всегда иметь профиль запуска "IIS Express" , хотя он не обязательно совместим со всеми проектами ASP.NET Core. Но стоит спросить: Кто-нибудь нашел способ отключить профиль запуска "IIS Express" в проекте ASP.NET Core и имеет только параметры самостоятельного хоста в профиле запуска селектор?

¹ Для любопытных я использую WebListener, потому что он позволит мне сам-хост в службе Windows и по-прежнему поддерживает аутентификацию NTLM на машине без установки IIS. Kestrel поддерживает только NTLM, когда он размещается в IIS, а не когда он сам размещается.

Ответ 1

UPDATE:

Проблема должна быть исправлена ​​с последней версией (обновлением) Visual Studio 2017.

Начальный ответ:

Как упоминалось в комментариях в ответе ssmith, Visual Studio восстанавливает настройки при перезагрузке.

Поскольку я не мог найти лучшего решения, я просто отказал разрешениям на запись в launchsettings.json для Visual Studio. Я оставил инструкции в своем другом ответе на аналогичный вопрос, вот только копия и вставка:

  • Обновите свой launchsettings.json в последний раз.
  • Закрыть Visual Studio.
  • Откройте параметры безопасности (щелкните правой кнопкой мыши по файлу launchsettings.json в проводнике → Свойства → Безопасность)
  • Нажмите "Дополнительно" → "Изменить разрешения"
  • Выберите "Аутентифицированные пользователи" (или другую группу пользователей, под которой работает Visual Studio на вашем компьютере) из списка "Записи разрешений" и нажмите "Изменить" →
  • Отметьте "Запретить" для разрешения "Создать файлы/запись данных" .
  • Нажмите OK во всех открытых диалогах и предупреждениях для сохранения изменений.
  • Повторно запустите Visual Studio и убедитесь, что оно не обновляется.

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

Ответ 2

Я создал расширение VS 2017 для работы с настройками запуска iis express https://marketplace.visualstudio.com/vsgallery/e09e0342-f9af-4306-8cf5-35238e34592d

Общая идея заключается в том, чтобы исправить launchSettings.json для каждого основного проекта .net перед выполнением команд Build/Start/StartWithoutDebugging

Ответ 3

Таким образом, мы тоже боремся с этим. То, что мы закончили делать, было с копией launchsettings.json, которая была "чистой", без содержимого IIS Express, а затем с предварительной сборкой script, которая копирует чистую версию поверх существующей версии.

  • Создайте новый файл. launchSettings.json.pristine в той же папке, что и ваш существующий файл настроек запуска.
    введите описание изображения здесь

  • Добавьте предварительную сборку script, чтобы скопировать чистый файл, перезаписывающий настройки IIS.

    cd ..\..\..\Properties copy launchSettings.json.pristine launchSettings.json

Настройка события предварительной сборки

Это должно эффективно скопировать его на build/run/etc.

Ответ 4

Достаточно ли вам просто удалить параметр IIS Express из файла launchSettings.json в свойствах проекта?

Удалите материал в красном поле: введите описание изображения здесь

Теперь должен отображаться только другой профиль: введите описание изображения здесь

Обратите внимание, что я использую VS2017 RC. Это может быть ошибка в VS2015, с которой вы сталкиваетесь. Вы можете попробовать отредактировать и сохранить файл launchSettings.json с помощью отдельного текстового редактора и посмотреть, работает ли это для вас. Я могу подтвердить, что это прекрасно работает в VS2017 RC.