ASP.NET Core 3.1 to ASP.NET Core 6.0

ASP.NET Core 3.1 升級  ASP.NET Core 6.0

紀錄一下專案升級 dotnet core 3.1 升級到 NET 6

3.1 to 5

首先升級到NET 5的部分,請記得安裝 NET 5 SDK,基本上需要調整的都是專案檔內的TargetFramework

將   netcoreapp3.1改成net5.0

 

 

 

 

 

接著如果有引用套件的部分

Microsoft.AspNetCore.*或是Microsoft.Extensions.*請將版本調整為5.0.0

    <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="5.0.0" />

接著刪除專案內的obj、bin資料夾避免有奇怪的檔案卡著造成異常

接著就是清除本機的nuget套件快取,可以在套件管理主控台或是cmd能呼叫到dotnet即可

dotnet nuget locals --clear all

接著重新建置,是死是活就看這一次?

官網參考連結

5 to 6

首先請先安裝visual studio 2022

下載連結

接著調整 appsettings.json

以前是長這樣

  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },

現在是

"Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },

接著我們來改專案檔

TargetFramework 從net5.0改到net 6.0

還要加點有趣的東西ImplicitUsings跟Nullable,

ImplicitUsings可以讓你直接全域using一部分的命名空間,依照你使用的sdk會有所不同,

Nullable會幫你IDE啟動null檢查,這邊我先註解太多,太可怕了!

  

 

 

 

 

接著如果有引用套件的部分

Microsoft.AspNetCore.*或是Microsoft.Extensions.*請將版本調整為6.0.0

接著重頭戲,Program.cs調整,因為後就沒有startup.cs了都調整到Program中處理,

至於該怎樣長就是用visual studio 2022 先開一個專案來參考

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

沒錯一行 using都沒有,就是ImplicitUsings的作用,

接著參考這部分將startup中的相關功能都搬過來,取config的方式也有調整

builder.Services.Configure<ConfigModel>(builder.Configuration.GetSection("ConfigName"));

調整完畢就可以刪除startup.cs

接著刪除專案內的obj、bin資料夾避免有奇怪的檔案卡著造成異常

接著就是清除本機的nuget套件快取,可以在套件管理主控台或是cmd能呼叫到dotnet即可

dotnet nuget locals --clear all

然後請用visual studio 2022建置 2019不支援net 6會有一堆詭異問題….

官方參考文件1

官方參考文件2