2017-02-22 6 views
16

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

Поскольку я использую WebListener, а потому, что WebListener is not compatible with 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», хотя он не обязательно совместим со всеми проектами Core .NET. Но стоит спросить: Кто-нибудь нашел способ отключить профиль запуска «IIS Express» в проекте ASP.NET Core и имеет только только опции самостоятельного хоста в селекторе запуска запуска?

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

ответ

1

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

Удалить материал в красной коробке: enter image description here

Теперь только другой профиль должен появиться: enter image description here

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

+0

Действительно ли он сохраняет файл таким образом? В VS2015, когда я нажимаю «Сохранить», файл, который * фактически записывается на диск *, снова добавляет профиль IIS Express. Однако вы не увидите этого изменения в среде IDE, если вы не закрываете и не открываете файл или не открываете это во внешнем редакторе. –

+0

Только что подтверждено. Это действительно сохраняет его, как показано. Закрытие и повторное открытие файла (в VS или в противном случае) показывает его сохранение, как и следовало ожидать. – ssmith

+0

Хорошо, круто. Интересно, нашел ли они какой-то сценарий, в котором VS2015 не мог эффективно работать без IIS Express и расширен VS2017 для покрытия этого сценария (и, таким образом, принудительный вариант IIS Express в 2015 году, но не 2017). Если вы отредактируете свой ответ, чтобы поставить «он работает в VS2017, должен быть VS2015», более заметным наверху, я буду рад принять ваш ответ. –

1

UPDATE:

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

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

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

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

  1. Обновления вашего launchsettings.json в последний раз.
  2. Закрыть Visual Studio.
  3. настройки безопасности Open (щелкните правой кнопкой мыши на launchsettings.json в Проводнике -> Свойства -> Безопасность)
  4. Нажмите кнопку Дополнительно -> Изменить Разрешения
  5. Выберите «Авторизованные пользователи» (или другую группу пользователей, в соответствии с которым Visual Studio является на вашем компьютере) из списка «Записи разрешений» и нажмите «Изменить» ->
  6. Отметьте «Запретить» для разрешения «Создать файлы/данные».
  7. Нажмите ОК во всех открытых диалогах и предупреждениях для сохранения изменений.
  8. Reopen Visual Studio и увидеть, что он не выполняет его обновления.

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

1

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

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

+0

Это приятное обходное решение, если вы никогда не используете IISExpress. Трюк NTFS работает, но раздражает отказ на уровне проекта. Это немного больше исходной команды/контроля (если это вас раздражает, установите это. Если нет, не делайте этого). Поведение действительно должно настраиваться в VS-вариантах (без каких-либо расширений). Открытый источник, хорошо продуманный. Я нахожусь. – scottt732

1

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

  1. Создайте новый файл. launchSettings.json.pristine в той же папке, что и ваш существующий файл настроек запуска.
    enter image description here

  2. Добавить предварительно сценарий сборки, чтобы скопировать чистый файл overwritting настройки IIS.

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

Setting up a pre build event

Это должно эффективно скопировать его на сборки/запуска/и т.д..