略記asp.netコア3.0更新

最近、asp.netコアから活動室予約項目がasp.netコア3.0から2.2のアップデートは、それを記録し、レッスンは、ピットのアップグレード段を含むがこれらに限定されない学びました、

  • TargetFramework(netcoreapp2.2更新する必要がありますnetcoreapp3.0
  • 依存
  • ホスト/環境
  • MVC
  • ルーティング
  • 濶歩
  • Dockerfile
  • EF(推奨されません更新)

TargetFramework更新

で元のプロジェクトnetcoreapp2.xバージョンは、のように更新する必要がありnetcoreapp3.0、更新後のパッケージがあれば、プロジェクトの一部が依存に基づいて元のパッケージnetstandard2.0 netstandard2.1のように更新する必要があるかもしれないnetstandard2.1(非必須依存プロジェクトを参照すること)

依存関係

ときdotnetcoreバージョン2.xフォームnugetで提供された元のパッケージのほとんどは、あなたが(参照フレームワークでパッケージを参照する必要がもはやnuget多くのパッケージが公開されているdotnetcore 3.0パッケージから開始し、直接参照をnugetことはできませんFrameworkReference

たとえば、クラスライブラリプロジェクトでは<Project Sdk="Microsoft.NET.Sdk">、そのような参照持つ<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.2" />3.0には、例えば、参照フレームワークを使用する必要性、nugetパッケージdotnetcore対応する公開していません。

コピー
<FrameworkReference Include="Microsoft.AspNetCore.App" />

Webプロジェクト場合は<Project Sdk="Microsoft.NET.Sdk.Web">、SDKは、直接ウェブtargetFrameworkに更新されnetcoreapp3.0、その上に、あなたは上記のプロジェクトへの参照を追加する必要はありません<PackageReference Include="Microsoft.AspNetCore.App"/>参照を直接削除することができ

ホスト&&環境

オリジナルIHostingEnvironmentの代わりに、IWebHostEnvironment元の注入IHostingEnvironmentの必要に応じて注入するために修飾されましたIWebHostEnvironment

オリジナルをProgram使用してWebHostBuilder代わりにHostBuilderとのconfigure ` ConfigureWebHostDefaults次のように`の変更:

Program.csの

MVCの

サービス登録

3.0 MVCのための年ControllerRazorPages同様にRazorViews、それはWebAPIのプロジェクトだけを追加することができているならば、我々は、彼らが必要とするサービスのみを注入することができ、射出サービス仕上げController対応方法を追加する必要にサービスを:

コピー
services.AddControllers(); // WebAPI
services.AddControllersWithViews(); // MVC
services.AddRazorPages(); // RazorPage

JSONの設定

asp.netのMicrosoftの新しいJSONのデフォルトを使用してコア3.0、まだ推奨される使用Newtonsoft.Json、成熟し、特殊なケースの処理の多くを持っているためには、次のように使用し、.NETファクトスタンダードでJSONのシリアライズとなっています:

  1. 参考nugetパッケージMicrosoft.AspNetCore.Mvc.NewtonsoftJson

  2. 使用するように設定 Newtonsoft.Json

コピー
services.AddControllersWithViews()
    .AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.ContractResolver = new DefaultContractResolver();
        options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc; // 设置时区为 UTC
    });

Rounting

asp.netコア3.0は、エンドポイントrountingをお勧めします

以下のような構成は以下のとおりです。

コピー
           app.UseStaticFiles();

            app.UseSwagger()
                .UseSwaggerUI(c =>
                {
                    // c.RoutePrefix = string.Empty; //
                    c.SwaggerEndpoint($"/swagger/{ApplicationHelper.ApplicationName}/swagger.json", "活动室预约系统 API");
                    c.DocumentTitle = "活动室预约系统 API"; }); app.UseRouting(); // 放在 UseStaticFiles 之后 app.UseCors(builder => builder.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin()); app.UseRequestLog(); app.UsePerformanceLog(); app.UseAuthentication(); app.UseAuthorization(); // 放在 UseAuthentication 之后 app.UseEndpoints(endpoints => { endpoints.MapControllers(); // 属性路由 endpoints.MapControllerRoute("Notice", "/Notice/{path}.html", new { controller = "Home", action = "NoticeDetails" }); // 自定义路由 endpoints.MapControllerRoute(name: "areaRoute", "{area:exists}/{controller=Home}/{action=Index}"); // 区域路由 endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}"); // 默认路由 }); 

闊歩

最新バージョン5.0.0-RC-Xに依存するアップデート闊歩(安定版を作っていない、あなたが見るためのプレビュー版を表示する必要があります)

コピー
services.AddSwaggerGen(options =>
{
    options.SwaggerDoc(ApplicationHelper.ApplicationName, new Microsoft.OpenApi.Models.OpenApiInfo { Title = "活动室预约系统 API", Version = "1.0" });

    options.IncludeXmlComments(System.IO.Path.Combine(AppContext.BaseDirectory, $"{typeof(Models.Notice).Assembly.GetName().Name}.xml")); options.IncludeXmlComments(System.IO.Path.Combine(AppContext.BaseDirectory, $"{typeof(API.NoticeController).Assembly.GetName().Name}.xml"), true); });

その他のリファレンス:
https://www.cnblogs.com/laozhang-is-phi/p/11520048.html#autoid-6-0-0
https://www.cnblogs.com/weihanli/p/ues-swagger -in-aspnetcore3_0.html

ドッカーの

3.0に更新するためのベースイメージのニーズのDockerfile

例dockerfile:

コピー
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-alpine AS build-env
WORKDIR /src # Copy csproj and restore as distinct layers COPY ActivityReservation.Common/*.csproj ActivityReservation.Common/ COPY ActivityReservation.Models/*.csproj ActivityReservation.Models/ COPY ActivityReservation.DataAccess/*.csproj ActivityReservation.DataAccess/ COPY ActivityReservation.Business/*.csproj ActivityReservation.Business/ COPY ActivityReservation.Helper/*.csproj ActivityReservation.Helper/ COPY ActivityReservation.WechatAPI/*.csproj ActivityReservation.WechatAPI/ COPY ActivityReservation.AdminLogic/*.csproj ActivityReservation.AdminLogic/ COPY ActivityReservation.API/*.csproj ActivityReservation.API/ COPY ActivityReservation/ActivityReservation.csproj ActivityReservation/ # RUN dotnet restore ActivityReservation/ActivityReservation.csproj ## diff between netcore2.2 and netcore3.0 WORKDIR /src/ActivityReservation RUN dotnet restore # copy everything and build COPY . . RUN dotnet publish -c Release -o out ActivityReservation/ActivityReservation.csproj # build runtime image FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine LABEL Maintainer="WeihanLi" WORKDIR /app COPY --from=build-env /src/ActivityReservation/out . EXPOSE 80 ENTRYPOINT ["dotnet", "ActivityReservation.dll"]

ベースイメージが一般的に問題ではありませんし、dockerfileに便利がある場合ことに注意する必要が変更dotnet publishとアイテムがディレクトリに存在しない公開、あなたが公開したいファイルを見つけることができません最終的には、現在この問題が発生することがあります。

DOTNETコア3.0 CLIは、あなたのプロジェクトファイルのディレクトリに公開されます2.xバージョンでは、現在のディレクトリにないアイテムを公開したい場合は、破壊の変化を持っていますが、バージョン3.0は、例えば、実行し、カレントディレクトリにリリースされる予定dotnet publish -c Release ./src/ActivityReservation.csproj -o outのコマンドを:

2.xのバージョンがしますsrcディレクトリの生成outフォルダを

バージョン3.0現在のディレクトリが生成されますout、フォルダをoutフォルダ、src同じレベルで

詳細な質問を参照することができますhttps://github.com/dotnet/cli/issues/12696

IF

EFコア2.xでのasp.net 3.0の使用中のEFコア3.0と3.0のasp.netコア完全に独立し、缶コアプロジェクト

EFコア3.0は、あなたがより明確にどのような条件とデータベースの実装がローカルで実行されるどのような条件では知ることができます互換性に影響する変更、もはや暗黙のサポートクライアントの描画データを、持っていますが、実際の試験のダウンは、まだ多くの疑問があります、EFに基づいて、床には、スプライスクエリ式ツリーにしようとカプセル化しますが、最後の実行は問題があるでしょうが、簡略化されたクライアントの条件は、実際に任意のフィルタリング操作を、それ一時的に実行していないときEFコア3.0をお勧めします、そしてあなたは、このような展開など、更新後の他の問題は、ドッキングウィンドウの高山で、この問題が発生する可能性が経験することが、問題を見ないようにしてくださいhttps://github.com/aspnet/EntityFrameworkCore/issues/18025

このプロジェクトは現在、EF core2.1 + asp.net core3.0実行を使用しています

より多くの

他の場所でも、変更したい場所を持っている必要があり、追加してください

リファレンス

おすすめ

転載: www.cnblogs.com/WebApp-DotNet/p/11950253.html