Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7
Тег EnvironmentTagHelper используется для генерации определенной разметки html в зависимости от состояния приложения: находится ли приложение в процессе разработки, тестирования или уже опубликовано на сервере. Состояние проекта задается с помощью среды окружения ASPNETCORE_ENVIRONMENT. Нередко данный тег-хелпер используется совместно с LinkTagHelper и ScriptTagHelper. Его ключевой атрибут names позволяет установить названия состояний среды, при которых применяется данный тег.
Например, мы могли бы подключать css-стили bootstrap с использованием данного тег-хелпера следующим образом:
<environment names="Development"> <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" /> </environment> <environment names="Staging,Production"> <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/4.3.0/css/bootstrap.min.css" /> </environment>
Атрибут names
через запятую позволяет перечислить, к каким состояниям среды приложения применяется этот тег.
В данном случае, если проект на стадии Development (то есть в разработке), то подключается локальный файл bootstrap.css. Если
же проект находится в процессе тестирования (Staging) или уже опубликован (Production), то подключается файл bootstrap.min.css из CDN.
При обработке данного тега фреймворк использует значение переменной окружения ASPNETCORE_ENVIRONMENT. При разработке по умолчанию эта переменная имеет значение "Development". В частности, мы можем увидеть ее значение, открыв свойства проекта и далее вкладку Debug:
Значение переменной ASPNETCORE_ENVIRONMENT привязано к определенному профилю. По умолчанию проект ASP.NET Core предлагает два профиля. Один называется IISExpress, а другой по имени проекта.
Например, в данном случае проект находится в состоянии Development, поэтому выше определенный тег environment будет генерировать следующую разметку:
<link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.css" />
Если же мы изменим значение ASPNETCORE_ENVIRONMENT на Production
:
В этом случае тег environment сгенерирует следующую разметку:
<link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/4.3.0/css/bootstrap.min.css" />
Кроме окна свойств проекта мы можем поменять значение ASPNETCORE_ENVIRONMENT для определенного профиля в файле launchSettings.json, который находится в проекте в папке Properties и который по умолчанию выглядит примерно так:
{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iis": { "applicationUrl": "http://localhost/TagHelpersApp", "sslPort": 0 }, "iisExpress": { "applicationUrl": "http://localhost:60141", "sslPort": 0 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "TagHelpersApp": { "commandName": "Project", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, "applicationUrl": "http://localhost:5000" } } }
Здесь мы можем поменять значение "ASPNETCORE_ENVIRONMENT"
на любое предпочтительное. При этом обращаю внимание, что это значение
довольно условное: мы можем вводить свои собственные значения, если нам необходимо более детально разграничить стадии разработки или типы окружения, в которых
пребывает проект.
Также обращаю внимание, что тег environment касается не только подключения стилей или скриптов, но и добавление любой разметки html. Например, определим в представлении следующий код:
<environment names="Production"> <p>Проект развернут на сервере</p> </environment> <environment names="Development"> <p>Проект в состоянии разработки</p> </environment>