Skip to content

Tips mengkonversi .Net Framework ke .Net Core

.NET framework atau biasa dikenal dengan dot net adalah framework perangkat lunak yang diproduksi oleh Microsoft dan dijalankan pada media Microsoft Windows.

Dot net berjalan pada perangkat lunak virtual machine (Common Language Runtime) alih-alih menggunakan perangkat keras komputer. Dan CLR ini berjalan native pada sistem operasi windows. Selain itu dotnet juga bergantung pada kumpulan library Framework Class Library (FCL).


.Net Core bersifat open source dan gratis dan mampu berjalan pada multi ranah windows, linux, dan mac Os. DotnetCore memiliki CoreCLR, implementasi CLR untuk lintas platform, dan CoreFX yang merupakan porting dari sebagian FCL


Ada beberapa checklist kapan menggunakan .net kapan menggunakan .netCore.

Tetap gunakan .net ketika:

  • Servernya harus menggunakan Windows Server
  • Basis kode saat ini sebagian besar menggunakan .net Framework
  • Library atau paket nuget belum tersedia di .netcore
  • Platform layanan yang digunakan tidak mendukung .net core (beberapa layanan azure membutuhkan net framework seperti azure fabric)

Gunakan .net Core ketika:


Apabila diperlukan porting .net ke .netCore dapat dilakukan dengan beberapa langkah.

  1. Identifikasi apakah ada third party library pada projek saat ini.

Kita dapat melakukan pengecekan dengan beberapa cara:

a. melihat reference pada tiap-tiap proyek.

TIdak ada third party

b. Kita dapat menggunakan tools apiport untuk mencek kompabilitas dari libary yang kita gunakan.

apiport analyzae -f .
checking library

API Portability Analyzer tool (apitool) menganalisa dan membuat laporan kesesuaian tiap API yang tidak tersedia di .net core. Dan memberi kita analisa garis besar, bagaimana rencana porting dijalankan.

Sehingga kita lihat library apa saja yang kompabilitasnya bermasalah.

portabilitas library
Library yang tidak ditemukan

Dari data diatas dapat disimpulkan bahwa tidak ada library 3rd party yang bermasalah atau dapat dikonversi ke .net core

Apabila ditemukan library yang tidak kompatibel. Ada beberapa penanganan:

  1. Bila library itu milik kita sendiri, maka kita harus mengkonversi library itu terlebih dahulu
  2. Bila itu merupakan milik pihak luar maka kita dapat meminta tiket untuk mengkonversi atau mencari alternatif package lain.

Kita dapat juga menggunakan situs packagesearch untuk menemukan alternatif dari package di .net


Khusus pengguna windows dapat melakukan pengecekan kompabilitas target framework dengan memilih framework 4.7.2 atau diatasnya. Yang akan memunculkan alternatif secara otomatis bila ada target yang tidak disupport .net core.

Target framework ke 4.7.2 keatas (hanya windows)

2. Langkah selanjutnya adalah melakukan konversi project.

Opsi pertama adalah melakukan konversi csproj.

Ubah csproj dengan Tools-> edit file

ubah targetFramework menjadi dotnet framework dari <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion> ke <TargetFramework>netcoreapp2.1</TargetFramework>

Serta pada <ItemGroup> tambahkan <PackageReference Include=”Microsoft.AspNetCore.App” />

Jalankan dotnet build untuk me-restore dan build, maka akan muncul hasil apakah project berhasil dibuild atau tidak. Bila tidak maka lakukan beberapa konfigurasi perbaikan.

Lakukan perbaikan apabila terjadi masalah saat build.

build berhasil

Contoh repository dapat dilihat disini.


Beberapa kendala yang terkadang muncul pada proses porting:

  1. Paket tidak ditemukan
Global.Flight.Data.csproj : error NU1101: Unable to find package System.Xml. No packages exist with this id in source(s): nuget.org
Global.Flight.Data.csproj : error NU1101: Unable to find package System.Web. No packages exist with this id in source(s): nuget.org
Global.Flight.Data.csproj : error NU1101: Unable to find package System.Data. No packages exist with this id in source(s): nuget.org

AspNetCore.App telah berisi set API untuk net Core. Library ini dapat ditambahkan <PackageReference Include=”Microsoft.AspNetCore.App” /> di ItemGroup

AssemblyInfo.cs(10,12): error CS0579: Duplicate 'System.Reflection.AssemblyCompanyAttribute' attribute 
AssemblyInfo.cs(11,12): error CS0579: Duplicate 'System.Reflection.AssemblyConfigurationAttribute' attribute 
AssemblyInfo.cs(12,12): error CS0579: Duplicate 'System.Reflection.AssemblyFileVersionAttribute' attribute 
AssemblyInfo.cs(14,12): error CS0579: Duplicate 'System.Reflection.AssemblyProductAttribute' attribute 
AssemblyInfo.cs(15,12): error CS0579: Duplicate 'System.Reflection.AssemblyTitleAttribute' attribute 
AssemblyInfo.cs(16,12): error CS0579: Duplicate 'System.Reflection.AssemblyVersionAttribute' attribute 

Hal ini terjadi karena pada .net framework terdapat assembly pada bin atau terdapat berkas Properties\AssemblyInfo.cs Hal ini dapat diakali dengan menambah <GenerateAssemblyInfo>false</GenerateAssemblyInfo> di PropertyGroup


Tips personal untuk refaktor ke .net core:

  1. Refaktor test terlebih dahulu, seminimalnya fungsi utama pada aplikasi dapat tercover sebelum melakukan refaktor menggunakan MSTest, xUnit atau NUnit yang telah disupport net Core
  2. Buat monolitik terlebih dahulu, bila interface/factory dan library ada di proyek lain satukan terlebih dahulu lalu refaktor apabila tes sudah berjalan sesuai

Selamat mengkonversi 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *