ASP.NET Core 2.2プロジェクト3.0メモへのアップグレード

7913 ワード

ASP.NET Core 2.2はASPに移行する.NET Core 3.0注意すべき点はこのエッセイに記載されています.
TargetFrameworkをnetcoreapp 3に変更する.0 
<TargetFramework>netcoreapp3.0TargetFramework>

Webプロジェクト(Microsoft.NET.Sdk.Web)からMicrosoftを削除する.AspNetCore.AppのPackageReference
<PackageReference Include="Microsoft.AspNetCore.App" />

クラスライブラリプロジェクトの場合、Microsoftがある場合.AspNetCore.AppのPackageReference参照は、FrameworkReferenceに変更する必要があります
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
ItemGroup>

またはMicrosoft.NET.SdkをMicrosoftに変更しました.NET.Sdk.Web、OutputTypeをLibraryに設定、詳細は博問を参照
<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.0TargetFramework>
    <OutputType>LibraryOutputType>
  PropertyGroup>
Project>

ProgramでWebHostをHostに変更(注:Hostを使用すると小さな穴がありますが、詳しくは博問を参照)
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();
            });
}

Razor Pagesを使用しない場合はStartup.ConfigureServicesでservices.AddMvc()を
services.AddControllers();

Startupでapp.UseMvc()をappに変更する.UseRouting()とapp.UseEndpoints()
app.UseRouting();
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

 .NET Core 3.0 SDKのdockerミラー
mcr.microsoft.com/dotnet/core/sdk:3.0

ASP.NET Core 3.0 runtimeのdockerミラー
mcr.microsoft.com/dotnet/core/aspnet:3.0

Web API応答のjsonデータが中国語で符号化される問題(詳細は博問を参照)
services.AddMvc().AddNewtonsoftJson();

Razor Class Libraryプロジェクトの場合.csproj構成
<Project Sdk="Microsoft.NET.Sdk.Razor">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.0TargetFramework>
    <AddRazorSupportForMvc>trueAddRazorSupportForMvc>
  PropertyGroup>
  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  ItemGroup>
Project>

EF Core 3.0一対一の関係の構成(INNER JOIN SQL文の生成)
builder.HasOne(p => p.ViewCount)
    .WithOne()
    .IsRequired()
    .HasPrincipalKey(vc => vc.PostId); 

EF Core 3.0 OwnsOne関係構成注意
builder.OwnsOne(b => b.ScoreRank, sr =>
{
    sr.ToTable("ScoreRank");
    sr.HasKey(x => x.BlogId);
    //EF Core 3.0   
    sr.WithOwner().HasForeignKey(x => x.BlogId);
});

EF Plus(Z.EntityFramework.Plus.EFCore)はサポートしていません.NET Core 3.0、詳細は博問を参照
EFCore.BulkExtensionsもサポートしていません.NET Core 3.0ですが、1行のコードを修正するだけでサポートできます.詳細は博問を参照してください.
データベース・サーバがSQL Server 2008を使用し、dockerコンテナ配置を使用している場合はopensslの構成を変更する必要があります.詳細は、博問を参照してください.
【関連リンク】
Breaking changes to Microsoft.AspNetCore.App in 3.0