C# asp.net Web API核心项目的启动类中的SetCompatibilityVersion是什么
使用Visual Studio 2017,我刚刚创建了一个简单的API项目,如下所示。 在Startup.cs文件中,我有以下代码C# asp.net Web API核心项目的启动类中的SetCompatibilityVersion是什么,c#,asp.net-core,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Webapi,使用Visual Studio 2017,我刚刚创建了一个简单的API项目,如下所示。 在Startup.cs文件中,我有以下代码 public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); } 有人能解释一下这是什么意思吗?我们需要保留这个代码吗 我认为微软应该发表一
public void ConfigureServices(IServiceCollection services) {
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
有人能解释一下这是什么意思吗?我们需要保留这个代码吗
我认为微软应该发表一些评论来说明这些代码的作用
当您调用
AddMvc
方法时,会使用某些选项注册几个组件。您调用一个方法,整个mvc框架就连接起来了
但是,如果mvc团队将来决定更改默认值,或者决定不再默认注册组件,或者更改此方法的预期副作用,那么依赖此方法的用户代码将中断。为了避免这种破坏,您可以调用集合兼容性方法,mvc团队将使用该方法来保留提供给您的行为
假设他们引入了一个新特性,该特性仅在您针对2.3平台时存在:如果您的代码声明它针对2.2 api,mvc团队将知道您没有使用该特性,因为它当时不存在。通过这种方式,可以对应该提供什么以及如何提供做出安全的假设
有关更多详细信息,请参阅。Yennefer的回答很好,我只想补充一些内容
- 对于ASP.NET Core 2.X,可能需要使用
,原因如上所述SetCompatibilityVersion
- 对于ASP.NET Core 3.0来说,它是一个no-op,这意味着它完全不做任何事情
- 对于ASP.NET Core 3.X(但不是3.0)和forward,它可能有一个值