#c# #asp.net #.net #asp.net-core
Вопрос:
В чем разница между
<environment include="...">...
и
<environment names="...">...
Официальная документация вообще не помогает их различать (для меня).:
Помощник по тегам среды в ASP.NET Сердечник
имена
… Если какое-либо из предоставленных имен среды соответствует текущей среде, отображается вложенное содержимое … Значения среды сравниваются с текущим значением, возвращаемым IWebHostEnvironment.Имя среды
Содержимое отображается, если среда размещения является промежуточной или производственной
<environment names="Staging,Production"> <strong>IWebHostEnvironment.EnvironmentName is Staging or Production</strong> </environment>
включать
Свойство include демонстрирует поведение, аналогичное поведению атрибута names. Среда, указанная в значении атрибута include, должна соответствовать среде размещения приложения (IWebHostEnvironment.Имя среды) для отображения содержимого тега.
<environment include="Staging,Production"> <strong>IWebHostEnvironment.EnvironmentName is Staging or Production</strong> </environment>
Даже в их фрагментах кода используется идентичное самоописание «Среда веб-хостинга.Имя среды-это Постановка или производство».
В чем разница между этими двумя?
Ответ №1:
Похоже, что «имена» — это более старый способ, а «включить/исключить» — более новый способ.
Новый
exclude
атрибут вEnvironmentTagHelper
позволяет легко указать средеtaghelper для визуализации во всех средах, КРОМЕ указанных вами. Также есть новыйinclude
атрибут, который ведет себя так же, какnames
и в ASP.NET Ядро 1.Изучение помощника по тегам среды исключает и включает атрибуты в ASP.NET Ядро 2
Я предполагаю, что Microsoft сохранила старое names
для обратной совместимости. Я понимаю, почему в документации это не отражено.
Основываясь на моем опыте, официальной документации и приведенной выше статье, нет никакой функциональной разницы между name
и include
. Это имя include
просто лучше сочетается с exclude
.