ASP.NET Core 2.2 프로젝트를 3.0 의사록으로 업그레이드

7974 단어
ASP.NET Core 2.2에서 ASP.NET Core 3.0에서 주의해야 할 부분은 이 에세이에 기록되어 있다.
Target Framework를 netcoreapp3으로 변경합니다.0 
<TargetFramework>netcoreapp3.0TargetFramework>

웹 프로젝트(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.웹, 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.Configure 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

웹 API에서 응답하는 json 데이터의 중국어 인코딩 문제(자세한 내용은 Know 참조)
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.Entity Framework.Plus.EFCore)는 지원되지 않습니다.NET Core 3.0, 자세히 보기
EFCore.BulkExtensions도 지원되지 않습니다.NET Core 3.0은 1줄 코드만 수정하면 지원됩니다. 자세한 내용은 Knowledge 참조
만약 데이터베이스 서버가 SQL Server 2008을 사용하고 docker 용기 배치를 사용한다면 Openssl의 설정을 수정해야 합니다.
【관련 링크】
Breaking changes to Microsoft.AspNetCore.App in 3.0

좋은 웹페이지 즐겨찾기