ASPからNET Core2.2~3.0これらの問題に直面する可能性があります.

5744 ワード

ASPからNET Core2.2~3.0これらの問題に直面する可能性があります。


休みの間、マイクロソフトの公式文書を再学習して基礎知識を固めたいと思っています.マイクロソフトが現在発表されていることは知っています.NET Core3.0の3番目のプレビュー版で、同時に我が家のパソコンにもvs 2019がインストールされています.So,vs 2019+.NET Core3.0 Contoso UniversityというWEBアプリをフォローしてみましたが、3.0ベースで操作している間にいくつかの問題があったので、マイクロソフトの「ASP.NET Coreから2.2から3.0プレビュー版2へ移行」というドキュメントを見て、今日出会った問題について整理して、皆さんに役に立つことを望んでいます.もちろん、マイクロソフトの公式ドキュメントを直接読んで見ることもできます.しかし、私は公式の説明を読むとき、いつも翻訳が正確ではなく、読みにくいと感じています.だから、ここでは自分の理解が公式のドキュメントに対する補充です.
作者:依楽祝原文リンク:https://www.cnblogs.com/yilezhu/p/10661161.html

私が直面した問題


ASP.NET Core2.0時代、プロジェクトにEF Coreサポートを追加するには、対応するデータベースドライバパッケージをインストールする必要がありました.チュートリアルではSQL Server、関連するドライバパッケージMicrosoftを使用します.EntityFrameworkCore.SqlServer. このパッケージはMicrosoftに含まれています.AspNetCore.Appメタパケットでは、Microsoft.AspNetCore.Appパケットに対するパケット参照が適用される場合、パケットを参照する必要はありません.2.0のテンプレートプロジェクトは、Mcrosoft.AspNetCore.Appというパッケージを自動的にロードします.しかし3.0にはこのMcrosoft.AspNetCore.Appというパッケージがなく、モジュール化がさらに徹底しています!必要なEF関連のパッケージは、自分で参照する必要があります.

2.0リットル3.0アップグレードガイド


今日出会った問題について、ASPを整理します.NET Coreは2.0から3.0にアップグレードされたアップグレードガイドで、皆さんに役立つことを望んでいます.もちろん、マイクロソフトの公式ドキュメントを直接読むこともできます.しかし、私は公式の説明を読むとき、いつも翻訳が正確ではなく、読みにくいと感じています.だから、ここでは自分の理解が公式のドキュメントに対する補充です.

プロジェクトファイルの更新

  • TargetFrameworkをnetcoreapp3.0:
    netcoreapp3.0
  • に設定
  • Microsoftを削除します.AspNetCore.AllまたはMicrosoft.AspNetCore.Appパッケージの.
  • は、要素の残りのMicrosoft.AspNetCore.*パッケージを現在のプレビュー版に更新する(例えば、3.0.0-preview 3.19128.7).対応する3.0バージョンのパッケージがない場合は、3.0でパッケージが破棄される可能性があります.これらの多くは、以前はMicrosoft.AspNetCore.Appに属しており、SQLサーバのEFに関する上記の問題のように、単独で参照する必要のないパッケージです.3.0で生成されなくなったパッケージのリストについては、aspnet/ASpNetCore#3756を参照してください.
  • 一部のプログラムセットは2.xと3.0の間のMicrosoft.aspnetcore.appで削除します.aspnet/ASpNetCore#3755にリストされているパッケージのAPIを使用している場合は、個別に追加する必要があります.例えば、Microsoft.EntityFrameworkCoreおよびSystem.Data.SqlClientは、Microsoft.AspNetCore.Appの一部ではない.Microsoft.aspnetcore.appのプログラムセットリストは未定で、3.0 RTMまでに変更されます.
  • Jsonを追加します.NETサポート.
  • プロジェクトのデフォルトはASP.である.NET Core 3.0以降は、プロセス内ベアラモデルとして設定されています.もちろん、値がInProcessの場合は、要素を削除して変更することもできます.

  • Json.NETサポート


    ASPの向上としてNET Coreが共有するフレームワークの一部、Json.NETはASP.からNET Core共有フレームから削除します.
    ASP.でNET Core 3.0プロジェクトではJsonを使用する.NET:
  • がパッケージ参照Microsoftに追加する.AspNetCore.Mvc.NewtonsoftJson
  • 更新ConfigureServices呼び出しAddNewtonsoftJson().
    services.AddMvc()
        .AddNewtonsoftJson();

  • NewtonsoftのカスタマイズはAddNewtonsoftJsonに設定できます.
    services.AddMvc()
        .AddNewtonsoftJson(options =>
               options.SerializerSettings.ContractResolver =
                  new CamelCasePropertyNamesContractResolver());

    WebHostBuilderの置き換え


    ASPを使用する.NET Core 3.0テンプレート汎用ホスト.以前のバージョンではWebホストが使用されていました.以下のコードは生成ASPを示す.NET Core 3.0テンプレートProgramクラス:
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }
    
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup();
                });
    }

    以下のコードプレゼンテーションテンプレートはASPを生成する.NET Core 2.2 Program類:
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }
    
        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup();
    }

    IWebHostBuilderは3.0に保持され、webBuilderのコード例に示されています.WebHostBuilderは、今後のリリースで廃棄され、HostBuilderに置き換えられます.WebHostBuilderからHostBuilderへの最も顕著な変化は依存関係注入(DI)である.HostBuilderでは、IConfigurationおよびIHostingEnvironmentのみがStartupのコンストラクタに注入されます.HostBuilder DI制約:
  • はDI容器を一度しか構築できない.
  • は、生成されたオブジェクト生存期間の問題を回避し、例えば、複数の一例例を解決する.

  • SignalRコードの更新

    AddJsonProtocolを呼び出すと、AddNewtonsoftJsonProtocolに置き換えられます.
  • 次の例は、変更前後のサーバコードを示す:
    services.AddSignalR(...)
            .AddJsonProtocol(...) // 2.2
    services.AddSignalR(...)
            .AddNewtonsoftJsonProtocol(...) // 3.0
  • 以下の例では、変更の前後を示す.NETクライアントコード:
    connection = new HubConnectionBuilder()
        .WithUrl(...)
        .AddJsonProtocol(...) // 2.2
        .Build()
    connection = new HubConnectionBuilder()
        .WithUrl(...)
        .AddNewtonsoftJsonProtocol(...) // 3.0
        .Build()
  • ランタイムコンパイルの有効化を選択


    3.0では、ランタイムコンパイルはオプションです.ランタイムコンパイルを有効にするには、ASP.を参照してください.NET CoreのRazorファイルをコンパイルします.

    まとめ


    マイクロソフトはASPを実現するために努力しているような気がします.NET Coreのモジュール化により,様々な依存性を低減し,パッケージをより小さくする.同時にASP.NET Coreも完璧になったので、みんなはASPを使う時だ.NET Coreです.また、皆さんがASPを体験するためならNET Core3.0なら今からでもいいですが、生産環境で使うなら公式版のリリースを待つほうがいいでしょう.
    posted @
    2019-04-06 11:21依楽祝読書(
    ...) コメント(
    ...) コレクションの編集