Apa perbedaan antara tipe proyek .NET Core dan .NET Standard Class Library?

814

Di Visual Studio, setidaknya ada 3 jenis perpustakaan kelas yang dapat Anda buat:

  • Perpustakaan Kelas (.NET Framework)
  • Perpustakaan Kelas (.NET Standard)
  • Perpustakaan Kelas (.NET Core)

Sementara yang pertama adalah apa yang telah kami gunakan selama bertahun-tahun, titik utama kebingungan yang saya alami adalah kapan harus menggunakan jenis pustaka kelas .NET Standard dan .NET Core. Saya digigit oleh ini baru-baru ini ketika mencoba untuk multi-target versi kerangka kerja yang berbeda , dan membuat proyek uji unit .

Jadi, apa perbedaan antara Class Library (.NET Standard) dan Class Library (.NET Core) , mengapa keduanya ada, dan kapan kita harus menggunakan satu di atas yang lain?

Gigi
sumber
10
Anda melewatkan satu: Perpustakaan Kelas (Portable). Core == framework, .NET Standard == portable.
Hans Passant
4
Ada satu dari Xamarin juga, tetapi yang lain tidak menambahkan nilai pada pertanyaan :)
Gigi
7
Ya, memang. Ide intinya adalah mereka menyerah pada pendekatan portabel, itu terlalu menderita dari n! masalah dengan cara terlalu banyak profil. Jadi sekarang Anda punya 7 standar untuk dipilih. Sebagian besar sebenarnya tidak portabel sekarang :). NETCore tidak dilakukan dengan tembakan panjang, mungkin butuh dua tahun lagi di klip mereka akan.
Hans Passant
12
OP mengatakan "setidaknya 3 jenis berbeda". Posnya akurat.
Dan Friedman
1
Saya bingung dengan penamaan Core yang bukan merupakan subset inti baik dari Standard maupun Framework plateform. Kami juga secara teratur melihat ASP yang terkait dengan .Net Core. Ini juga sangat membingungkan ...
Alexis Pautrot

Jawaban:

611

Kapan kita harus menggunakan yang satu?

Keputusan tersebut merupakan trade-off antara kompatibilitas dan akses API.

Gunakan pustaka .NET Standard ketika Anda ingin meningkatkan jumlah aplikasi yang akan kompatibel dengan pustaka Anda, dan Anda setuju dengan penurunan area permukaan .NET API yang dapat diakses oleh perpustakaan Anda.

Gunakan pustaka .NET Core saat Anda ingin menambah area permukaan .NET API yang dapat diakses pustaka Anda, dan Anda boleh saja dengan hanya mengizinkan .NET Core apps agar kompatibel dengan pustaka Anda.

Misalnya, perpustakaan yang menargetkan .NET Standard 1.3 akan kompatibel dengan aplikasi yang menargetkan .NET Framework 4.6, .NET Core 1.0, Universal Windows Platform 10.0, dan semua platform lain yang mendukung .NET Standard 1.3. Pustaka tidak akan memiliki akses ke beberapa bagian dari .NET API. Misalnya, Microsoft.NETCore.CoreCLRpaket tersebut kompatibel dengan .NET Core tetapi tidak dengan .NET Standard.

Apa perbedaan antara Perpustakaan Kelas (.NET Standard) dan Perpustakaan Kelas (.NET Core)?

Bagian kerangka kerja berbasis paket menjelaskan perbedaannya.

Kompatibilitas: Perpustakaan yang menargetkan .NET Standard akan berjalan pada runtime yang memenuhi standar .NET, seperti .NET Core, .NET Framework, Mono / Xamarin. Di sisi lain, pustaka yang menargetkan .NET Core hanya dapat berjalan di .NET Core runtime.

Area Permukaan API: .NET Standard libraries datang dengan segalanya NETStandard.Librarysedangkan .NET Core libraries datang dengan semuanya Microsoft.NETCore.App. Yang terakhir mencakup sekitar 20 pustaka tambahan, beberapa di antaranya dapat kita tambahkan secara manual ke pustaka .NET Standard kami (seperti System.Threading.Thread) dan beberapa di antaranya tidak kompatibel dengan .NET Standard (seperti Microsoft.NETCore.CoreCLR).

Juga, perpustakaan .NET Core menentukan runtime dan datang dengan model aplikasi. Itu penting, misalnya, untuk membuat perpustakaan kelas test unit dapat dijalankan.

Mengapa keduanya ada?

Mengabaikan perpustakaan untuk sesaat, alasan .NET Standard ada untuk portabilitas; itu mendefinisikan satu set API yang platform NET setuju untuk menerapkan. Platform apa pun yang mengimplementasikan .NET Standard kompatibel dengan pustaka yang menargetkan .NET Standard itu. Salah satu platform yang kompatibel adalah .NET Core.

Kembali ke pustaka, templat pustaka .NET Standard ada untuk dijalankan pada beberapa runtimes (dengan mengorbankan area permukaan API). Terlebih lagi, templat .NET Core library ada untuk mengakses lebih banyak area permukaan API (dengan mengorbankan kompatibilitas) dan untuk menentukan platform yang akan digunakan untuk membuat executable.

Berikut adalah matriks interaktif yang menunjukkan .NET Standard yang mendukung .NET implementasi dan seberapa banyak area permukaan API yang tersedia.

Shaun Luttin
sumber
2
Jawaban yang sangat bagus Namun, pertanyaan tambahan (terkait dengan pertanyaan ini : mengapa model aplikasi diperlukan untuk menjalankan tes unit? Ini tidak pernah terjadi di masa lalu, ketika kami menggunakan perpustakaan kelas yang tidak dapat dijalankan untuk mengadakan koleksi tes unit.
Gigi
3
Saya telah memperbarui jawaban saya untuk pertanyaan yang ditautkan. TL; DR; Di masa lalu, perpustakaan kelas menargetkan kerangka penuh, yang mencakup model aplikasi.
Shaun Luttin
Anda lupa menutupi Perpustakaan Kelas (.NET Framework), apakah itu kompatibel dengan .NET Standard dan .NET Core?
Tomas
8
Diagram ini sangat membantu saya mendapatkannya.
jpaugh
1
@BBarBar Pertanyaan aslinya adalah tentang perbedaan antara .NET Standard dan .NET Core. Itu sebabnya saya menghilangkan detail cross-platform, karena cross-platform bukan perbedaan antara Core dan Standard. Saya sengaja menyimpan jawaban saya untuk pertanyaan awal.
Shaun Luttin
396

Sebuah NET Inti Kelas Perpustakaan dibangun di atas Standar NET . Jika Anda ingin mengimplementasikan perpustakaan yang portabel ke .NET Framework ,. .NET Core dan Xamarin , pilih .NET Standard Library

.NET Core pada akhirnya akan mengimplementasikan .NET Standard 2 (seperti halnya Xamarin dan .NET Framework )

NET Inti , Xamarin dan .NET Framework bisa, karena itu, diidentifikasi sebagai rasa dari NET Standard

Untuk bukti di masa depan aplikasi Anda untuk berbagi dan menggunakan kembali kode, Anda lebih suka menerapkan perpustakaan .NET Standard.

Microsoft juga merekomendasikan agar Anda menggunakan .NET Standard alih-alih Portable Class Libraries .

Mengutip MSDN sebagai sumber otoritatif, .NET Standard dimaksudkan sebagai One Library to Rule Them All . Karena gambar bernilai ribuan kata, hal-hal berikut akan memperjelas:

1. Skenario aplikasi Anda saat ini (terfragmentasi)

Seperti kebanyakan dari kita, Anda mungkin berada dalam situasi di bawah ini: (.NET Framework, Xamarin, dan sekarang. Aplikasi NET Core.)

Masukkan deskripsi gambar di sini

2. Apa yang akan diaktifkan oleh .NET Standard Library untuk Anda (kompatibilitas lintas-kerangka)

Menerapkan .NET Standard Library memungkinkan pembagian kode di semua rasa yang berbeda ini:

Satu Perpustakaan untuk Mengatur Mereka Semua

Untuk yang tidak sabar:

  1. .NET Standard memecahkan masalah berbagi kode untuk .NET developer di semua platform dengan membawa semua API yang Anda harapkan dan sukai di seluruh lingkungan yang Anda butuhkan: aplikasi desktop, aplikasi & game seluler, dan layanan cloud:
  2. .NET Standard adalah seperangkat API yang harus diimplementasikan oleh semua platform .NET . Ini menyatukan platform .NET dan mencegah fragmentasi di masa depan .
  3. .NET Standard 2.0 akan diimplementasikan oleh .NET Framework ,. Core NET , dan Xamarin . Untuk .NET Core , ini akan menambahkan banyak API yang ada yang telah diminta.
  4. .NET Standard 2.0 menyertakan shim kompatibilitas untuk binari .NET Framework , secara signifikan meningkatkan set pustaka yang dapat Anda rujuk dari pustaka .NET Standard Anda.
  5. .NET Standard akan menggantikan Portable Class Libraries (PCLs) sebagai cerita perkakas untuk membangun multi-platform .NET libraries.

Agar tabel dapat membantu memahami versi tertinggi dari .NET Standard yang dapat Anda targetkan, berdasarkan platform NET mana yang ingin Anda jalankan, tuju di sini .

Sumber: MSDN: Memperkenalkan .NET Standard

pengguna919426
sumber
2
ASP.NET Core sedikit salah tempat dalam grafik itu, karena dapat digunakan dengan .NET Framework, bukan hanya .NET Core, karena sebenarnya menargetkan .NET Standard.
Neme
2
Tetapi Anda dapat membuat aplikasi ASP.NET Core dengan .NET Framework - ASP.NET Core sepenuhnya milik lapisan yang sama dengan .NET Standard. Itu tidak dibatasi hanya. NET Core.
Neme
1
@Nama Pertama, ya .Net Core dapat menyertakan pustaka .Net Framework tetapi kehilangan penggunaan ulang lintas platform (hanya untuk Windows - bukan * nix atau OSX, atau digunakan kembali di Xamarin). Suatu situasi yang dipenuhi mengingat bahwa banyak orang telah & ingin menggunakan kembali perpustakaan yang sudah ada, tulis thein.Net Framework tanpa minat untuk manfaat lintas platform (tingkat OS dan tingkat Model-Aplikasi) ... Jika Anda masih merasa saya salah, mungkin Anda bisa berdebat dengan Microsoft, yang menulis gambar-gambar itu ... :-)
user919426
3
Saya tidak berbicara tentang menggabungkan .NET Core & .NET Framework. Maksud saya adalah bahwa ASP.NET Core tidak bergantung pada. NET Core sama sekali, meskipun namanya. Ini ditulis sebagai perpustakaan yang menargetkan .NET Standard, oleh karena itu Anda dapat menggunakannya di mana saja Anda dapat menggunakan .NET Standard. Ya, mereka membuat kesalahan dalam gambar itu.
Neme
2
@OgrishMan Anda tidak dapat membuat executable di .Net Standard . Ini hanya bisa menjadi Perpustakaan Kelas, yang dapat dirujuk oleh kode pelaksana lainnya. Tidak ada runtime .
user919426
91

Jadi jawaban singkatnya adalah:

IAnimal == .NetStandard (General)
ICat == .NetCore (Less General)
IDog == .NetFramework (Specific / oldest and has the most features)
Joe
sumber
26
@ Joe.wang seperti yang saya lihat adalah buruk bahwa itu mengacaukan hubungan antara .NET Core dan .NET Framework. Jika .NET Core adalah burung, maka .NET Framework tidak bisa menjadi elang (mungkin kucing lebih cocok).
Lex Li
8
@LexLi benar, ini mengeruhkan air. .NET Framework bukan merupakan subtipe dari .NET Core.
Eric Eskildsen
6
ini mungkin terlihat agak mewah tetapi tidak akurat
afr
3
Komentar asli oleh @ Jo terdengar lebih akurat. jawaban yang diedit oleh Komunitas membuatnya membingungkan
Nandun
7
Anjing memiliki lebih banyak fitur daripada kucing? Tidak :)
hrzafer
71

.NET dan .NET Core adalah dua implementasi berbeda dari .NET runtime. Baik Core dan Framework (tetapi terutama Framework) memiliki profil yang berbeda yang mencakup pilihan yang lebih besar atau lebih kecil (atau hanya berbeda) dari banyak API dan rakitan yang telah dibuat Microsoft untuk .NET, tergantung di mana mereka diinstal dan dalam profil apa.

Misalnya, ada beberapa API berbeda yang tersedia di aplikasi Universal Windows daripada di profil Windows "normal". Bahkan di Windows, Anda mungkin memiliki profil "Klien" vs. profil "Penuh". Selain itu, dan ada implementasi lain (seperti Mono ) yang memiliki set perpustakaan mereka sendiri.

.NET Standard adalah spesifikasi yang set pustaka dan rakitan API harus tersedia. Aplikasi yang ditulis untuk .NET Standard 1.0 harus dapat dikompilasi dan dijalankan dengan versi Kerangka, Core, Mono, dll., Yang mengiklankan dukungan untuk koleksi .NET Standard 1.0 perpustakaan. Serupa juga berlaku untuk .NET Standard 1.1, 1.5, 1.6, 2.0, dll. Selama runtime memberikan dukungan untuk versi Standar yang ditargetkan oleh program Anda, program Anda harus dijalankan di sana.

Proyek yang ditargetkan pada versi Standar tidak akan dapat menggunakan fitur yang tidak termasuk dalam revisi standar tersebut. Ini tidak berarti Anda tidak dapat mengambil ketergantungan pada majelis lain, atau API yang diterbitkan oleh vendor lain (yaitu: item di NuGet). Tetapi itu berarti bahwa setiap dependensi yang Anda ambil juga harus menyertakan dukungan untuk versi .NET Standard Anda. .NET Standard berkembang dengan cepat, tetapi masih cukup baru, dan cukup peduli tentang beberapa profil runtime yang lebih kecil, sehingga batasan ini dapat terasa menyesakkan. (Catat satu setengah tahun kemudian: ini mulai berubah, dan versi .NET Standard baru-baru ini jauh lebih bagus dan lebih lengkap).

Di sisi lain, aplikasi yang ditargetkan pada Standar harus dapat digunakan dalam lebih banyak situasi penyebaran, karena secara teori dapat dijalankan dengan Core, Framework, Mono, dll. Untuk proyek perpustakaan kelas mencari distribusi yang luas, itu janji yang menarik . Untuk proyek perpustakaan kelas yang digunakan terutama untuk keperluan internal, mungkin tidak terlalu memprihatinkan.

.NET Standard juga dapat berguna dalam situasi di mana tim administrator sistem ingin pindah dari ASP.NET pada Windows ke ASP.NET untuk .NET Core di Linux untuk alasan filosofis atau biaya, tetapi tim Pengembangan ingin terus bekerja melawannya. NET Framework dalam Visual Studio pada Windows.

Joel Coehoorn
sumber
1
Sementara gambaran umum yang bagus tentang .NET Core dan .NET Standard, jawaban ini gagal menjawab pertanyaan tentang perpustakaan kelas yang menargetkan masing-masing.
Gigi
6
Jika itu tujuan Anda, pertanyaan itu harus ditutup sebagai "tidak jelas apa yang Anda tanyakan", karena selalu ada terlalu banyak situasional spesifik yang berperan dalam lingkungan orang tertentu sehingga kami tidak akan pernah memberi tahu Anda apa yang harus dilakukan. , atau sebagai "Terlalu Luas" jika Anda bertanya tentang kasus umum. Yang bisa kami lakukan di sini adalah memberi Anda informasi tentang produk, sehingga Anda dapat diinformasikan untuk membuat keputusan sendiri.
Joel Coehoorn
Jelas bukan itu masalahnya, karena orang lain telah secara akurat menjawab pertanyaan itu. Pertanyaan saya adalah tentang perpustakaan kelas. Jawaban Anda adalah tentang kerangka kerja.
Gigi
29

.NET Framework dan .NET Core keduanya merupakan framework.

.NET Standard adalah standar (dengan kata lain, spesifikasi).

Anda dapat membuat proyek yang dapat dieksekusi (seperti aplikasi konsol, atau aplikasi ASP.NET) dengan .NET Framework dan .NET Core, tetapi tidak dengan .NET Standard.

Dengan .NET Standard, Anda hanya dapat membuat proyek perpustakaan kelas yang tidak dapat dieksekusi mandiri dan harus dirujuk oleh proyek .NET Core atau .NET Framework yang dapat dieksekusi.

bside
sumber
20

Semoga ini akan membantu untuk memahami hubungan antara permukaan .NET Standard API dan platform .NET lainnya . Setiap antarmuka mewakili kerangka kerja target dan metode mewakili kelompok-kelompok API yang tersedia pada kerangka kerja target itu.

namespace Analogy
{
  // .NET Standard

interface INetStandard10
{
    void Primitives();
    void Reflection();
    void Tasks();
    void Xml();
    void Collections();
    void Linq();
}

interface INetStandard11 : INetStandard10
{
    void ConcurrentCollections();
    void LinqParallel();
    void Compression();
    void HttpClient();
}

interface INetStandard12 : INetStandard11
{
    void ThreadingTimer();
}

interface INetStandard13 : INetStandard12
{
    //.NET Standard 1.3 specific APIs
}

// And so on ...


// .NET Framework 

interface INetFramework45 : INetStandard11
{
    void FileSystem();
    void Console();
    void ThreadPool();
    void Crypto();
    void WebSockets();
    void Process();
    void Drawing();
    void SystemWeb();
    void WPF();
    void WindowsForms();
    void WCF();
}

interface INetFramework451 : INetFramework45, INetStandard12
{
    // .NET Framework 4.5.1 specific APIs
}

interface INetFramework452 : INetFramework451, INetStandard12
{
    // .NET Framework 4.5.2 specific APIs
}

interface INetFramework46 : INetFramework452, INetStandard13
{
    // .NET Framework 4.6 specific APIs
}

interface INetFramework461 : INetFramework46, INetStandard14
{
    // .NET Framework 4.6.1 specific APIs
}

interface INetFramework462 : INetFramework461, INetStandard15
{
    // .NET Framework 4.6.2 specific APIs
}

// .NET Core
interface INetCoreApp10 : INetStandard15
{
    // TODO: .NET Core 1.0 specific APIs
}
// Windows Universal Platform
interface IWindowsUniversalPlatform : INetStandard13
{
    void GPS();
    void Xaml();
}

// Xamarin 
interface IXamarinIOS : INetStandard15
{
    void AppleAPIs();
}

interface IXamarinAndroid : INetStandard15
{
    void GoogleAPIs();
}    
// Future platform

interface ISomeFuturePlatform : INetStandard13
{
    // A future platform chooses to implement a specific .NET Standard version.
    // All libraries that target that version are instantly compatible with this new
    // platform
}
}

Sumber

Mahbubur Rahman
sumber
17

Cara lain untuk menjelaskan perbedaan bisa dengan contoh dunia nyata, karena kebanyakan dari kita manusia akan menggunakan alat dan kerangka kerja yang ada (Xamarin, Unity, dll) untuk melakukan pekerjaan itu.

Jadi, dengan .NET Framework Anda memiliki semua alat .NET untuk digunakan, tetapi Anda hanya dapat menargetkan aplikasi Windows (UWP, Winforms, ASP.NET, dll). Karena .NET Framework adalah sumber tertutup, tidak banyak yang dapat dilakukan tentangnya.

Dengan .NET Core Anda memiliki lebih sedikit alat tetapi Anda dapat menargetkan Platform Desktop utama (Windows, Linux, Mac). Ini sangat berguna dalam aplikasi ASP.NET Core, karena Anda sekarang dapat meng-host Asp.net di Linux (harga hosting lebih murah). Sekarang, karena .NET Core bersumber terbuka, secara teknis dimungkinkan untuk mengembangkan perpustakaan untuk platform lain. Tetapi karena tidak ada kerangka kerja yang mendukungnya, saya tidak berpikir itu ide yang bagus.

Dengan .NET Standard Anda memiliki alat yang lebih sedikit tetapi Anda dapat menargetkan semua / sebagian besar platform. Anda dapat menargetkan Seluler berkat Xamarin, dan Anda bahkan dapat menargetkan Konsol Game berkat Mono / Unity. Pembaruan: Mungkin juga untuk menargetkan klien web dengan platform UNO dan Blazor (meskipun keduanya agak eksperimental sekarang).

Dalam aplikasi dunia nyata Anda mungkin perlu menggunakan semuanya. Sebagai contoh, saya mengembangkan aplikasi point of sale yang memiliki arsitektur berikut:

Dibagikan Server dan Klien:

  • Pustaka .NET Standard yang menangani Model aplikasi saya.
  • Pustaka .NET Standard yang menangani validasi data yang dikirim oleh klien.

Karena ini adalah perpustakaan .NET Standard, ini dapat digunakan dalam proyek lain (klien dan server).

Juga keuntungan bagus memiliki validasi pada pustaka .NET standard karena saya dapat memastikan validasi yang sama diterapkan pada server dan klien. Server wajib, sementara klien opsional dan berguna untuk mengurangi lalu lintas.

Sisi Server (API Web):

  • Pustaka .NET Standard (bisa juga Core) yang menangani semua koneksi basis data.

  • Proyek .NET Core yang menangani Rest API dan memanfaatkan pustaka basis data.

Karena ini dikembangkan dalam .NET Core, saya dapat meng-host aplikasi pada server Linux.

Sisi Klien (MVVM dengan WPF + Xamarin. Bentuk Android / iOS):

  • Pustaka .NET Standard yang menangani koneksi API klien.

  • Pustaka .NET Standard yang menangani Logika ViewModels. Digunakan di semua tampilan.

  • Aplikasi .NET Framework WPF yang menangani tampilan WPF untuk aplikasi windows. Pembaruan: Aplikasi WPF dapat menjadi .NET core sekarang, meskipun saat ini hanya berfungsi di windows. AvaloniaUI adalah alternatif yang baik untuk membuat aplikasi Desktop GUI untuk platform desktop lainnya.

  • Pustaka .NET Standard yang menangani tampilan Formulir Xamarin.

  • Proyek Xamarin Android dan Xamarin IOS.

Jadi Anda dapat melihat bahwa ada keuntungan besar di sini di sisi klien dari aplikasi, karena saya dapat menggunakan kembali keduanya .NET Standard libraries (Client API dan ViewModels) dan hanya membuat tampilan tanpa logika untuk aplikasi WPF, Xamarin dan iOS.

Dev Kevin
sumber
2
Saya pikir ini adalah jawaban yang lebih baik karena menggabungkan dunia nyata.
J Weezy
12

.NET Standard: Anggap saja sebagai perpustakaan standar besar. Saat menggunakan ini sebagai dependensi Anda hanya bisa membuat libraries (.DLLs), bukan executable. Pustaka yang dibuat dengan standar .NET sebagai ketergantungan dapat ditambahkan ke Xamarin. Android, sebuah Xamarin.iOS, proyek .NET Core Windows / OS X / Linux.

.NET Core: Anggap saja sebagai kelanjutan dari kerangka .NET yang lama, hanya saja itu opensource dan beberapa hal belum diimplementasikan dan yang lainnya sudah tidak digunakan lagi. Ini memperluas standar .NET dengan fungsi tambahan, tetapi hanya berjalan di desktop . Saat menambahkan ini sebagai dependensi, Anda dapat membuat aplikasi yang dapat dijalankan pada Windows, Linux dan OS X. (Meskipun konsol hanya untuk saat ini, tidak ada GUI). Jadi. NET Core = .NET Standard + desktop spesifik.

Juga UWP menggunakannya dan ASP.NET Core baru menggunakannya sebagai ketergantungan juga.

Peter Mortensen
sumber
8

.NET Standard ada terutama untuk meningkatkan berbagi kode dan membuat API tersedia di setiap implementasi .NET lebih konsisten.

Saat membuat pustaka, kita dapat memiliki target sebagai .NET Standard 2.0 sehingga pustaka yang dibuat akan kompatibel dengan berbagai versi .NET Framework termasuk .NET Core, Mono , dll.

ARP
sumber
2

Di atas jawaban mungkin menggambarkan pemahaman terbaik tentang perbedaan antara inti bersih, standar bersih dan bingkai bersih jadi saya hanya ingin berbagi pengalaman saya ketika memilih ini lebih dari itu.

Dalam proyek yang Anda butuhkan untuk mencampur antara .NET Framework, .NET Core dan .NET Standard. Sebagai contoh, pada saat kita membangun sistem dengan .NET Core 1.0, tidak ada dukungan untuk hosting Layanan Windows dengan .net core.

Alasan berikutnya adalah kami menggunakan Laporan Aktif yang tidak mendukung .NET Core. Jadi kami ingin membangun pustaka infrastruktur yang dapat digunakan untuk .NET Core (asp.net core) dan Windows Service and Reporting (.NET Framework) -> Itulah mengapa kami memilih .NET Standard untuk jenis perpustakaan ini. Memilih .NET standar berarti Anda harus mempertimbangkan dengan cermat setiap kelas di perpustakaan harus sederhana dan lintas .NET (inti, kerangka kerja, standar).

Kesimpulan:

  • .NET Standard untuk pustaka infrastruktur dan shared umum. Lib ini dapat dirujuk oleh .NET Framework dan .NET Core.
  • .NET Framework untuk teknologi yang tidak didukung seperti Active Report, Window Services (sekarang dengan .NET 3.0 mendukung).
  • .NET Core untuk ASP.NET Core tentu saja.

Microsoft baru saja mengumumkan .NET 5: https://devblogs.microsoft.com/dotnet/introducing-net-5/

toannm
sumber
@ Gigi Silakan baca jawaban saya dengan hati-hati, saya katakan itu ketika .NET Core dalam versi 1.0 dan hal ini kami ingin merancang solusi untuk menggabungkan keduanya .NET core dan .NET framework. ASP.NET Core mendukung .NET Framework dari 2.0 di atas. Jawaban saya adalah cerita ketika Anda harus berurusan dengan beberapa versi .NET. Jadi saya tidak mengerti mengapa Anda memiliki downvote ketika Anda tidak memahami situasinya dengan benar.
toannm
Terima kasih atas jawaban Anda - Saya sudah membaca jawaban Anda, dan saya memang membaca bagian di mana Anda merujuk ke .NET Core 1.0. Namun saya tidak menganggap itu sebagai prasyarat untuk menafsirkan kesimpulan Anda, yang jika tidak akan menyesatkan orang yang membaca dengan versi saat ini. Selain itu, sepertinya komentar saya ditolak oleh polisi Stack Overflow, yang memalukan karena saya sudah terbiasa dengan situs ini.
Gigi
0

NET Framework. Aplikasi Windows Form, ASP.NET dan WPF harus dikembangkan menggunakan .NET Framework library

Aplikasi .NET Standard Xamarin, IOs dan MAC OSx harus di-devop menggunakan .NET Standard library

.NET Core
Universal Windows Platform (UWP) dan aplikasi Linux harus dikembangkan menggunakan .NET Core library. API diimplementasikan dalam C ++ dan Anda dapat menggunakan C ++, VB.NET, C #, F # dan Javascript languages.NET

Fabio Panzironi
sumber
0

.Net Core Class Library dibangun di atas standar .Net. Jika Anda ingin menerapkan perpustakaan yang portabel ke .Net Framework, .Net Core dan Xamarin, pilih .Net Standard Library

Ömer Özkan
sumber
Jawaban Anda tidak sepenuhnya terkait dengan pertanyaan. tolong revisi
Avid Programmer