您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)ASP.NET Core 3.0遷移的示例分析的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
一.前言
.NET Core 3.0將會(huì)在 .NET Conf 大會(huì)上正式發(fā)布,截止今日發(fā)布了9個(gè)預(yù)覽版,改動(dòng)也是不少,由于沒(méi)有持續(xù)關(guān)注,今天將前面開(kāi)源的動(dòng)態(tài)WebApi項(xiàng)目遷移到.NET Core 3.0還花了不少時(shí)間踩坑,給大家分享一下我在遷移過(guò)程中遇到的坑。遷移的版本是當(dāng)前Release最新版本 .NET Core 2.2 到 .NET Core 3.0 Preview 9。
二.ASP.NET Core 項(xiàng)目遷移
官方遷移文檔:從 ASP.NET Core 2.2 遷移到3.0 ,這個(gè)官方文檔比較詳細(xì),但是有一些東西里面并沒(méi)有寫。
1.更改框架版本
將 TargetFramework 版本改為 netcoreapp3.0
2.移除Nuget包
移除所有 Nuget包
將其余 Nuget 包更新到支持 .NET Core 3.0 版本
3.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<Startup>(); }); }
4.Startup更改
ConfigureServices 方法:
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
改為 services.AddControllers()
(WebApi) / services.AddControllersWithViews();
(MVC)
Configure 方法:
1、該方法里獲取Host環(huán)境信息接口類型,IHostingEnvironment
改為 IWebHostEnvironment
2、app.UseMVc 改為:
WebApi:
app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
MVC:
app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); });
關(guān)于Json組件
ASP.NET Core 3.0 默認(rèn)移除了 Newtonsoft.Json
,使用了微軟自己實(shí)現(xiàn)的 System.Text.Json
,如果要改為 Newtonsoft.Json ,那么有以下兩步:
1.安裝Nuget包:
Install-Package Microsoft.AspNetCore.Mvc.NewtonsoftJson
2.注冊(cè)
services.AddControllers().AddNewtonsoftJson();
三.類庫(kù)(Class Library Net Standard 2.0)項(xiàng)目遷移
因?yàn)?ASP.NET Core 3.0 對(duì)元包機(jī)制的改動(dòng),現(xiàn)在不能通過(guò)nuget安裝 Microsoft.AspNetCore.All 或者 Microsoft.AspNetCore.App 3.0版本,以及他們包含的大多數(shù)Nuget包也不能通過(guò)nuget安裝了(沒(méi)有3.0對(duì)應(yīng)的版本)。如果說(shuō)還引用2.2版本的nuget包,那么運(yùn)行起來(lái)可能會(huì)出錯(cuò)。元包被包含在了 .NET Core SDK中,這意味著如果我們的類庫(kù)項(xiàng)目依賴了 AspNetCore 相關(guān)組件,那么將沒(méi)法繼續(xù)將項(xiàng)目目標(biāo)框架設(shè)置為 .NET Standard 了,只能設(shè)置為.NET Core 3.0,因?yàn)?ASP.NET Core 3.0 only run on .NET Core 。
元包機(jī)制改動(dòng)原因:https://github.com/aspnet/AspNetCore/issues/3608
1.更改框架版本
2.更新Nuget包
移除 Microsoft.AspNetCore.* 不具有 .NET Core 3.0 的版本,例如:
添加 FrameworkReference(不是 PackageReference) 引用:
感謝各位的閱讀!關(guān)于“ASP.NET Core 3.0遷移的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。