Mengapa membuat proyek Perpustakaan Kelas ASP.NET 5?

98

Saya mencoba untuk mencari tahu apa hubungan proyek "ASP.NET 5 Class Library" (vNext) C # dengan ASP.NET. Mengapa membuat proyek dengan template ini daripada hanya proyek "Perpustakaan Kelas" C # biasa?

Saya menyukai fitur-fitur baru, seperti file project.json daripada file .csproj dll, tetapi tampaknya tidak benar untuk membuat pustaka kelas "ASP.NET" ketika proyek tidak ada hubungannya dengan ASP.NET atau IIS dll. Ini hanya sebuah proyek untuk lapisan logika bisnis. Sebuah situs web WebApi ASP.NET pada akhirnya akan mereferensikan proyek ini, tetapi itu tidak relevan pada saat ini.

Apakah itu hanya nama yang buruk? Haruskah itu hanya disebut "Perpustakaan Kelas vNext" dan tidak menggunakan ikon yang terlihat seperti aplikasi web?

mkaj
sumber
Apakah ada perkiraan kapan mereka berpikir mungkin untuk menambahkan proyek yang sudah ada dengan tipe Perpustakaan Kelas lama yang baik? Ini adalah pemikiran terakhir yang saya harapkan untuk menghantui migrasi MVC 5 saya ke ASP.NET 5 MVC 6.
radbyx
"ASP.NET 5 Class Library" memiliki kerangka kerja yang berbeda dari ASP .NET Core, tetapi inti memiliki Core Class Library sendiri , gunakan itu sebagai gantinya.
Jaider

Jawaban:

100

Mengapa membuat proyek Perpustakaan Kelas ASP.NET 5?

Ada sejumlah manfaat proyek Perpustakaan Kelas ASP.NET 5 ( .kproj) dibandingkan proyek Perpustakaan Kelas ( .csproj):

  1. Perpustakaan ASP.NET 5 kelas dengan mudah mendukung proyek-proyek lintas-kompilasi ke beberapa target, seperti aspnet50, aspnetcore50, net45, dan berbagai variasi perpustakaan kelas portabel lainnya. Ini termasuk dukungan Visual Studio yang kaya untuk Intellisense untuk memberi tahu Anda API mana yang tersedia untuk target mana.
  2. Paket NuGet secara otomatis dibuat, yang merupakan hal yang sangat umum dilakukan dengan perpustakaan kelas.
  3. Produktivitas yang lebih baik dalam hal hal-hal seperti menyegarkan Penjelajah Solusi secara otomatis ketika sistem file berubah. Lebih sedikit konflik dalam kontrol sumber saat mencoba menggabungkan perubahan yang bertentangan di file * .csproj.
  4. Dapat dikompilasi lintas platform (sebagian karena tidak bergantung pada MSBuild)

Anda dapat mereferensikan proyek * .csproj dari proyek * .kproj (ini hanya menjadi jauh lebih mudah dengan pratinjau baru Visual Studio 2015), tetapi selalu memungkinkan dengan beberapa langkah manual.

Mengapa nama tersebut memiliki "ASP.NET" di dalamnya?

Sejauh namanya, itu adalah peninggalan sejarah yang akan segera dibenahi. Jenis proyek baru berguna jauh melampaui aplikasi ASP.NET 5. Berharap untuk melihat nama baru di pratinjau Visual Studio masa depan:

  • Aplikasi Konsol .NET (Lintas platform)
  • Perpustakaan Kelas .NET (Lintas platform)

Perbarui 5/13/2015

Dengan rilis Visual Studio 2015 RC Anda dapat melihat nama template proyek yang diperbarui:

  • Perpustakaan Kelas (Paket)
  • Aplikasi Konsol (Paket)

Ini menggunakan project.jsonfile dan .NET Execution Environment (DNX) untuk membangun, menjalankan, dan mengemas (ke dalam paket NuGet) proyek.

Template proyek ini terus muncul di dialog Proyek Baru di bawah node "Web", tetapi sekarang juga muncul di node "Visual C #" utama juga.

Template VS2015 RC Class Lib / Aplikasi Konsol

Eilon
sumber
dapatkah Anda memperluas # 2 - maksud Anda intellisense menyarankan sebuah API dan kemudian mendownload paket nuget untuk Anda? Saya mengetik JQuery dan itu akan memberikannya kepada saya?
Simon_Weaver
3
@Simon_Weaver Maksud saya bahwa sementara proyek Perpustakaan Kelas biasa hanya menghasilkan DLL dan PDB, yang baru menghasilkan NUPKG (paket NuGet) yang dapat diunggah ke nuget.org.
Eilon
2
.kproj sejak saat itu telah diubah namanya menjadi .xproj
Boris Lipschitz
10

Ini adalah pengamatan yang menarik, template saat ini akan menghasilkan perpustakaan kelas yang kompatibel dengan runtime ASP.NET 5. Anda tidak mendapatkannya dari perpustakaan kelas C # normal.

Saya mengajukan masalah berikut untuk melacak pertanyaan desain ini - https://github.com/aspnet/Home/issues/281

Yishai Galatzer
sumber
Saya akan memperhatikan masalah Anda, terima kasih. Masalah penamaan yang sama dengan "ASP.NET 5 Console Application" jelas. Mungkin harus disebut "Aplikasi Konsol vNext", jika tidak, pengembang dapat mengacaukannya dengan semacam aplikasi konsol ke situs web ASP.NET. Mungkin lokasi templat harus dipindahkan dari "Visual C # -> Web" ke "Visual C # -> vNext"
mkaj
Masalah github telah ditutup. Nama proyek yang lebih baik - terima kasih: github.com/aspnet/Home/issues/281
mkaj
3

Dari apa yang saya pahami, satu manfaat adalah bahwa produk akhir proyek Perpustakaan Kelas ASP.NET 5 adalah paket NuGet (bukan hanya rakitan .dll).

Anda dapat membuat paket NuGet dengan mengklik kanan proyek di Visual Studio 2015 dan memilih opsi "Publikasikan ...". Atau Anda dapat menggunakan "paket KPM" di baris perintah.

Selain itu, Anda memiliki kemampuan untuk menggunakan runtime ASP.NET 5 Core sehingga perpustakaan Anda dapat berjalan lintas platform.

Thomas Kadlec
sumber
Apakah nama itu salah? Tidak ada hubungannya dengan ASP.NET?
mkaj
1
Salah satu tujuan utama ASP.NET 5 adalah memungkinkannya berjalan lintas platform. Beberapa orang bertanya "bukankah ini seharusnya disebut .NET Core?" Setidaknya untuk saat ini pendekatan multi-platform Microsoft hanya tentang web (dan aplikasi konsol) dan tidak mendukung pengembangan desktop seperti Java. Untuk menekankan ini tentang web, mereka merek semuanya dengan nama "ASP.NET 5". Jika Anda ingin menghasilkan perpustakaan yang menjalankan lintas platform itu haruslah Perpustakaan Kelas ASP.NET 5.
Thomas Kadlec
Artinya, saya dapat memberi tahu bos saya 'ya' saat dia bertanya 'apakah ASP.NET teknologi terbaik' - itulah sebabnya
Simon_Weaver