环境包含与环境名称属性之间的区别

the*_*sti 5 .net c# asp.net asp.net-core

有什么区别

<environment include="...">...
Run Code Online (Sandbox Code Playgroud)

<environment names="...">...
Run Code Online (Sandbox Code Playgroud)

官方文档根本无法区分它们(对我来说):

ASP.NET Core 中的环境标记帮助程序

名字

...如果提供的任何环境名称与当前环境匹配,则呈现所包含的内容...将环境值与 IWebHostEnvironment.EnvironmentName 返回的当前值进行比较

如果托管环境是暂存或生产,则会呈现内容

<environment names="Staging,Production">
    <strong>IWebHostEnvironment.EnvironmentName is Staging or Production</strong>
</environment>
Run Code Online (Sandbox Code Playgroud)

包括

include 属性表现出与名称属性类似的行为。include 属性值中列出的环境必须与应用程序的托管环境 (IWebHostEnvironment.EnvironmentName) 匹配才能呈现标记的内容。

<environment include="Staging,Production">
    <strong>IWebHostEnvironment.EnvironmentName is Staging or Production</strong>
</environment>
Run Code Online (Sandbox Code Playgroud)

甚至他们的代码片段也使用相同的自我描述“IWebHostEnvironment.EnvironmentName is Staging or Production”。

两者有什么区别?

gun*_*171 2

似乎“名称”是较旧的方式,而“包含/排除”是较新的方式。

\n
\n

的新exclude属性EnvironmentTagHelper可让您轻松地告诉EnvironmentTagHelper 在除您指定的环境之外的所有环境中进行渲染。\xe2\x80\x99s 还有一个新属性,其行为与 ASP.NET Core 1 中的include行为相同。names

\n

探索 ASP.NET Core 2 中的环境标记帮助程序排除和包含属性

\n
\n

我猜微软保留旧names版本是为了向后兼容。我不知道为什么文档没有反映这一点。

\n

name根据我的经验、官方文档以及上面的那篇文章,和之间没有任何功能差异include。这个名字include与 . 搭配得更好exclude

\n