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會有一堆詭異問題….