<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      一.前言

      .NET Core 3.0將會在 .NET Conf 大會上正式發(fā)布,截止今日發(fā)布了9個(gè)預(yù)覽版,改動也是不少,由于沒有持續(xù)關(guān)注,今天將前面開源的動態(tài)
      WebApi項(xiàng)目 <https://github.com/dotnetauth/Panda.DynamicWebApi>遷移到.NET Core
      3.0還花了不少時(shí)間踩坑,給大家分享一下我在遷移過程中遇到的坑。遷移的版本是當(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
      <https://docs.microsoft.com/zh-cn/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio>
      ,這個(gè)官方文檔比較詳細(xì),但是有一些東西里面并沒有寫。

      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 方法:

      *
      該方法里獲取Host環(huán)境信息接口類型,IHostingEnvironment改為 IWebHostEnvironment



      *
      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.注冊
      services.AddControllers().AddNewtonsoftJson();
      三.類庫(Class Library Net Standard 2.0)項(xiàng)目遷移

      因?yàn)?ASP.NET Core 3.0 對元包機(jī)制的改動,現(xiàn)在不能通過nuget安裝 Microsoft.AspNetCore.All
      <https://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage?view=aspnetcore-3.0>
      或者M(jìn)icrosoft.AspNetCore.App
      <https://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-3.0>

      3.0版本,以及他們包含的大多數(shù)Nuget包也不能通過nuget安裝了(沒有3.0對應(yīng)的版本)。如果說還引用2.2版本的nuget包,那么運(yùn)行起來可能會出錯(cuò)。元包被包含在了
      .NET Core SDK中,這意味著如果我們的類庫項(xiàng)目依賴了 AspNetCore 相關(guān)組件,那么將沒法繼續(xù)將項(xiàng)目目標(biāo)框架設(shè)置為 .NET Standard
      了,只能設(shè)置為.NET Core 3.0,因?yàn)锳SP.NET Core 3.0 only run on .NET Core 。

      元包機(jī)制改動原因:https://github.com/aspnet/AspNetCore/issues/3608
      <https://github.com/aspnet/AspNetCore/issues/3608>



      1.更改框架版本



      2.更新Nuget包

      移除 Microsoft.AspNetCore.* 不具有 .NET Core 3.0 的版本,例如:



      添加 FrameworkReference(不是 PackageReference) 引用:



      三.結(jié)束

      題外話:ASP.NET Core 直到2.2 是可以同時(shí)運(yùn)行在 .NET Framework 和 .NET Core 中,但是從 ASP.NET Core
      3.0 開始,將會只支持 .NET Core。

      相關(guān)資料:A first look at changes coming in ASP.NET Core 3.0
      <https://devblogs.microsoft.com/aspnet/a-first-look-at-changes-coming-in-asp-net-core-3-0/>

      上面說的改動,微軟官方都有解釋原因,其實(shí)是為了變得更好而改動,彌補(bǔ)以前的缺點(diǎn),只不過對于用了這么久的Core來說有點(diǎn)折騰,但是還是能接受,為了更好的
      .NET Core。

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          欧美大黑粗 | 永久在线精品 | 国产成人免费在线 | 天天鲁天天躁天在线观看 | 亚洲美女高潮喷水 | 国产无遮挡裸体免费久久 | 张静初被弄得高潮迭起 | 男ji大巴进入女人的视频 | 免费一级黄色视频网站 | 性生交大片免费中文 |