ASP.NET Core 2.2 项目升级至 3.0 备忘录
.NET Core 3.0及ASP.NET Core 3.0 前瞻
ASP.NET Core 3.0 遷移避坑指南
將 ASP.NET Core 2.2 遷移至 ASP.NET Core 3.0 需要注意的地方記錄在這篇隨筆中。
TargetFramework 改為?netcoreapp3.0?
<TargetFramework>netcoreapp3.0</TargetFramework>從 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.0</TargetFramework>
<OutputType>Library</OutputType>
</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<Startup>();
});
}
如果不使用?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.0ASP.NET Core 3.0 runtime 的 docker 鏡像
mcr.microsoft.com/dotnet/core/aspnet:3.0Web API 響應的 json 數據中文被編碼的問題(詳見博問)
services.AddMvc().AddNewtonsoftJson();對于?Razor Class Library 項目 .csproj 配置
<Project Sdk="Microsoft.NET.Sdk.Razor"><PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
</Project>
EF Core 3.0 配置一對一關系(生成 INNER JOIN SQL 語句)
builder.HasOne(p => p.ViewCount).WithOne()
.IsRequired()
.HasPrincipalKey<ViewCount>(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?
原文鏈接:https://www.cnblogs.com/dudu/p/10776880.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的ASP.NET Core 2.2 项目升级至 3.0 备忘录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软+开源,那些亲爱的以及热爱的
- 下一篇: .NET Core 微信小程序退款——(