[DOTNETVN] Hướng dẫn nâng cấp asp net core 2.2 lên phiên bản 3.0-3.1

Hello Anh Em, hôm nay mình rãnh rỗi nên ngồi nâng cấp mấy cái project của mình từ netcore2 lên phiên bản 3. Sẵn đây thì mình cũng tạo luôn một bài viết để chia sẽ có Anh Em.

NetCore 3 ra đời với khá nhiều sự thay đổi, nếu như ứng dụng web của các bạn đang được chạy với phiên bản netcore 2.2 thì khi các bạn muốn thay đổi lên netcore 3 bước đầu tiên các bạn cần phải cài đặt netcore3 sdk tại tại link https://dotnet.microsoft.com/download/dotnet-core/3.0 các bạn nên download bản sdk cho đầy đủ nha.

Tiếp theo thì mở ứng dụng của bạn bằng Visual Studio 2019 nha (lưu ý là từ netcore 2.2 thì bạn phải dùng bản 2019 và nên cập nhật update mới nhất của bản Visual Studio 2019) .Click chuột phải vào project để thay đổi target framework tới 3.0 như hình bên dưới.

Lúc này thử build lại project sẽ gặp lỗi như thế này đây

Error NETSDK1079 The Microsoft.AspNetCore.All package is not supported when targeting .NET Core 3.0 or higher.  A FrameworkReference to Microsoft.AspNetCore.App should be used instead, and will be implicitly included by Microsoft.NET.Sdk.Web. EzTask.Modules.Project C:\Program Files\dotnet\sdk\3.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.targets 128
 
tại sao lại thế nhỉ frown, để mình nói sơ một tí nhe. Netcore 3 thì nó không còn kiểu reference tới nhiều package nữa mà nó chỉ reference tới 1 package duy nhất mà thôi vậy nên các bạn cần remove đi một số package đại loại như là
<ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.2.4" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.3" />
  </ItemGroup>
 
Lúc này thì file project của mình sau khi remove thì sẽ sạch sẽ lắm như hình bên dưới đây:
Xong!!!! nhưng mà sẽ có 1 tí thay đổi ở code nha
1. Nếu code của các bạn có dùng IHostEnviroment thì đổi thành IWebHostEnvironment nha
2. Nếu code của bạn có đoạn SetCompatibilityVersion(CompatibilityVersion.Version_2_2) thì xóa nó đi
3. Xóa đi app.UseBrowserLink(); (trong hàm Configure)
4. Thêm app.UseRouting(); (trong hàm Configure)
5. app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            }); (trong hàm Configure)
đổi thành
app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            }); (trong hàm Configure)
6. services.AddMvc() đối thành services.AddControllersWithViews(); (trong hàm ConfigureServices)
 
Các bạn yên tâm đi VS 2019 thông mình lắm nó sẽ gợi ý cho bạn các lỗi cần sửa cụ thể luôn, mình chỉ list là một số cái cơ bản cần sửa và tùy vào dự án của bạn có thể bạn sẽ sửa nhiều hơn ^^.
 

Thông tin bài viết