web-dev-qa-db-ja.com

asp.net Web APIコアプロジェクトのスタートアップクラス内のSetCompatibilityVersionとは

Visual Studio 2017を使用して、以下に示すような単純なAPIプロジェクトを作成しました。そして、Startup.csファイルには、このコードがあります。

public void ConfigureServices(IServiceCollection services) {

    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

}

誰かが手段とは何かについていくつかの光を投げることができますか?このコードを保持する必要がありますか?

私はMSがそのようなコードが何をするかを示すためにいくつかのコメントを入れるべきだと思います。

SetCompatibilityVersion

10
VivekDev

AddMvcメソッドを呼び出すと、いくつかのコンポーネントが特定のオプションで登録されます。 1つのメソッドを呼び出すと、mvcフレームワーク全体が接続されます。

ただし、将来のMVCチームがデフォルト値を変更することを決定した場合、またはコンポーネントがデフォルトで登録されなくなると決定した場合、またはこのメソッドの予想される副作用を変更した場合、それに依存するユーザーコードは機能しなくなります。このような破損を回避するには、提供された動作を維持するためにmvcチームが使用するset互換性メソッドを呼び出します。

彼らが新しい機能を導入するとします。これは、2.3プラットフォームを対象としている場合にのみ存在します。コードが2.2 APIを対象としていると宣言した場合、mvcチームは、その機能が当時存在しなかったため、その機能を使用していないことを認識します。このようにして、は何をどのように提供するかについて安全な仮定を行うことができます。

詳細については、 [〜#〜] msdn [〜#〜] を参照してください。

16
Yennefer

イエネファーの答えは素晴らしいです、私はいくつかのものを追加します。

  • ASP.NET Core 2.Xの場合、Yenneferが説明した理由により、SetCompatibilityVersionを使用する必要がある場合があります。

  • ASP.NET Core 3.0の場合、これは何もしません。つまり、まったく何もしません。 詳細はこちら

  • ASP.NET Core 3.X(3.0ではない)以降では、値が含まれる場合があります。 詳細はこちら

2
Jim Aho