Тег EnvironmentTagHelper используется для генерации определенной разметки html в зависимости от состояния приложения: находится ли приложение в процессе разработки, тестирования или уже опубликовано на сервере. Состояние проекта задается с помощью среды окружения ASPNETCORE_ENVIRONMENT. Нередко данный тег-хелпер используется совместно с LinkTagHelper и ScriptTagHelper. Его ключевой атрибут names позволяет установить названия состояний среды, при которых применяется данный тег.
Например, мы могли бы подключать css-стили bootstrap с использованием данного тег-хелпера следующим образом:
<environment names="Development"> <link rel="stylesheet" href="~/css/bootstrap.min.css" /> </environment> <environment names="Staging,Production"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" /> </environment>
Атрибут names позволяет через запятую перечислить, к каким состояниям среды приложения применяется этот тег. В данном случае, если проект на стадии Development (то есть в разработке), то подключается локальный файл bootstrap.min.css, который расположен в проекте в папке wwwroot/css.
Если же проект находится в процессе тестирования (Staging) или уже опубликован (Production), то подключается файл bootstrap.min.css из CDN.
При обработке данного тега фреймворк использует значение переменной окружения ASPNETCORE_ENVIRONMENT. При разработке по умолчанию эта переменная имеет значение "Development". Для управления этой переменной можно использовать файл launchSettings.json, который расположен в проекте в папке Properties:
Значение переменной ASPNETCORE_ENVIRONMENT привязано к определенному профилю. По умолчанию проект ASP.NET Core предлагает два профиля. Один называется IISExpress, а другой по имени проекта.
Например, в данном случае проект находится в состоянии Development, поэтому выше определенный тег environment будет генерировать следующую разметку:
<link rel="stylesheet" href="/css/bootstrap.css" />
Если же мы изменим значение ASPNETCORE_ENVIRONMENT на Production:
В этом случае тег environment сгенерирует следующую разметку:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" />
Также обращаю внимание, что тег environment касается не только подключения стилей или скриптов, но и добавление любой разметки html. Например, определим в представлении следующий код:
<environment names="Production"> <p>Проект развернут на сервере</p> </environment> <environment names="Development"> <p>Проект в состоянии разработки</p> </environment>
Например, если приложение находится в состоянии "Development":