Neden bir ASP.NET 5 Sınıf Kitaplığı projesi oluşturmalı?


98

Bir "ASP.NET 5 Sınıf Kitaplığı" (vNext) C # projesinin ASP.NET ile ne ilgisi olduğunu anlamaya çalışıyorum. Neden normal bir C # "Sınıf Kitaplığı" projesi yerine bu şablonla bir proje oluşturalım?

.Csproj dosyası vb. Yerine project.json dosyası gibi yeni özellikleri seviyorum, ancak projenin ASP.NET veya IIS vb. İle ilgisi olmadığında bir "ASP.NET" sınıf kitaplığı oluşturmak doğru görünmüyor. Bu sadece iş mantığı katmanı için bir proje. Yeni bir WebApi ASP.NET web sitesi, sonunda bu projeye başvuracaktır, ancak bu, bu noktada geçerli değildir.

Adı kötü mü? Yalnızca "vNext Sınıf Kitaplığı" olarak adlandırılmalı ve bir web uygulaması gibi görünen bir simge kullanmamalı mı?


Eski Sınıf Kitaplığı türünde mevcut bir projeyi eklemenin mümkün olduğunu düşündükleri zaman için bir tahmin var mı? Bu, MVC 5'imi ASP.NET 5 MVC 6'ya taşımayı beklediğim son şeydi.
radbyx

"ASP.NET 5 Sınıf Kitaplığı", ASP .NET Core'dan farklı çerçeveye sahiptir, ancak çekirdeğin kendi Çekirdek Sınıf Kitaplığı vardır , bunun yerine bunu kullanın.
Jaider

Yanıtlar:


100

Neden bir ASP.NET 5 Sınıf Kitaplığı projesi oluşturmalı?

ASP.NET 5 Sınıf Kitaplığı projelerinin ( .kproj) Sınıf Kitaplığı projelerine ( .csproj) göre bir dizi avantajı vardır :

  1. ASP.NET 5 sınıf kitaplıkları kolayca gibi birden hedeflere çapraz derleme projeleri destekler aspnet50, aspnetcore50, net45ve diğer çeşitli taşınabilir sınıf kütüphanesi varyasyonları. Bu, hangi hedefler için hangi API'lerin kullanılabilir olduğunu size bildirmek için Intellisense için zengin Visual Studio desteğini içerir.
  2. NuGet paketleri otomatik olarak oluşturulur ve bu, sınıf kitaplıklarıyla yapılan son derece yaygın bir şeydir.
  3. Dosya sistemi değiştiğinde Solution Explorer'ın otomatik olarak yenilenmesi gibi şeyler söz konusu olduğunda daha iyi üretkenlik. * .Csproj dosyasındaki çakışan değişiklikleri birleştirmeye çalışırken kaynak denetiminde daha az çakışma.
  4. Çapraz platformda derlenebilir (kısmen MSBuild'e bağlı olmadığı için)

Bir * .kproj projesinden bir * .csproj projesine başvurabilirsiniz (bu, Visual Studio 2015'in yeni önizlemesiyle çok daha kolay hale getirildi), ancak bazı manuel adımlarla her zaman mümkün oldu.

Adın içinde neden "ASP.NET" var?

İsimler söz konusu olduğunda, yakında ele alınacak olan bir tarih kalıntısı. Yeni proje türü, ASP.NET 5 uygulamalarının çok ötesinde faydalıdır. Visual Studio'nun gelecekteki bir önizlemesinde yeni adlar görmeyi bekleyin:

  • .NET Konsol Uygulaması (Çapraz platform)
  • .NET Sınıf Kitaplığı (Çapraz platform)

Güncelleme 5/13/2015

Visual Studio 2015 RC sürümüyle birlikte güncellenmiş proje şablonu adlarını görebilirsiniz:

  • Sınıf Kitaplığı (Paket)
  • Konsol Uygulaması (Paket)

Bunlar project.json, projeyi oluşturmak, çalıştırmak ve paketlemek (bir NuGet paketine) için dosyayı ve .NET Yürütme Ortamını (DNX) kullanır.

Bu proje şablonları, "Web" düğümü altındaki Yeni Proje iletişim kutusunda görünmeye devam eder, ancak artık ana "Görsel C #" düğümünde de görünür.

VS2015 RC Class Lib / Console Uygulama şablonları


# 2'yi genişletebilir misiniz - intellisense'in bir API önerdiğini ve ardından nuget paketini sizin için indirdiğini mi söylüyorsunuz? JQuery yazıyorum ve bana verecek mi?
Simon_Weaver

3
@Simon_Weaver Demek istediğim, normal Sınıf Kitaplığı projesi sadece bir DLL ve PDB üretirken, yenisi nuget.org'a yüklenebilen bir NUPKG (NuGet paketi) oluşturur.
Eilon

2
.kproj o zamandan beri .xproj olarak yeniden adlandırıldı
Boris Lipschitz

10

Bu ilginç bir gözlem, mevcut şablon ASP.NET 5 çalışma zamanı ile uyumlu bir sınıf kitaplığı oluşturacak. Bunu normal C # sınıf kitaplığından alamazsınız.

Bu tasarım sorusunu takip etmek için aşağıdaki sorunu dosyaladım - https://github.com/aspnet/Home/issues/281


Sorununuzu izleyeceğim teşekkürler. Açıkçası "ASP.NET 5 Konsol Uygulaması" ile aynı adlandırma sorunu. Belki "vNext Konsol Uygulaması" olarak adlandırılmalıdır, aksi takdirde geliştiriciler, bir ASP.NET web sitesine bir tür konsol uygulamasıyla karıştırabilir. Belki şablonların konumu "Visual C # -> Web" den "Visual C # ->
vNext

GitHub sorunu kapatıldı. Daha iyi proje isimleri - teşekkürler: github.com/aspnet/Home/issues/281
mkaj

3

Anladığım kadarıyla bir avantajı, ASP.NET 5 Sınıf Kitaplığı projesinin son ürününün bir NuGet paketi olmasıdır (yalnızca .dll derlemesi yerine).

NuGet paketini Visual Studio 2015'te projeye sağ tıklayıp "Yayınla ..." seçeneğini belirleyerek oluşturabilirsiniz. Veya komut satırında "KPM paketi" kullanabilirsiniz.

Ayrıca, kitaplığınızın platformlar arası çalışabilmesi için ASP.NET 5 Core çalışma zamanını kullanma yeteneğiniz de vardır.


Adı kötü mü? ASP.NET ile ilgisi yok mu?
mkaj

1
ASP.NET 5'in temel hedeflerinden biri, platformlar arası çalışmasına izin vermektir. Bazıları "bunun yerine .NET Core olarak adlandırılmamalı mı?" Diye sordu. En azından şimdilik Microsoft'un çoklu platform yaklaşımı yalnızca web (ve konsol uygulamaları) ile ilgili ve Java gibi masaüstü geliştirmeyi desteklemiyor. Web ile ilgili olduğunu vurgulamak için hepsini "ASP.NET 5" adı altında markalaştırıyorlar. Çapraz platform çalıştıran bir kitaplık oluşturmak istiyorsanız, bunun bir ASP.NET 5 Sınıf Kitaplığı olması gerekir.
Thomas Kadlec

Bu, patronuma 'ASP.NET en iyi teknoloji' diye sorduğunda 'evet' diyebileceğim anlamına geliyor - bu yüzden
Simon_Weaver
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.