Po co tworzyć projekt biblioteki klas ASP.NET 5?

98

Próbuję dowiedzieć się, co „ASP.NET 5 Class Library” (vNext) projekt C # ma wspólnego z ASP.NET. Po co tworzyć projekt za pomocą tego szablonu, a nie tylko zwykły projekt C # „Biblioteka klas”?

Podoba mi się nowe funkcje, takie jak plik project.json zamiast pliku .csproj itp., Ale nie wydaje się właściwe tworzenie biblioteki klas „ASP.NET”, gdy projekt nie ma nic wspólnego z ASP.NET lub IIS itp. .To tylko projekt dla warstwy logiki biznesowej. Nowa witryna sieci Web WebApi ASP.NET ostatecznie będzie odwoływać się do tego projektu, ale w tym momencie nie ma to znaczenia.

Czy jest po prostu źle nazwany? Czy powinna po prostu nosić nazwę „vNext Class Library” i nie używać ikony, która wygląda jak aplikacja internetowa?

mkaj
źródło
Czy istnieje oszacowanie, kiedy uważają, że można dodać istniejący projekt typu starej dobrej biblioteki klas? To ostatnia myśl, której spodziewałem się, że przeniosę mój MVC 5 do migracji ASP.NET 5 MVC 6.
radbyx
„Biblioteka klas ASP.NET 5” ma inną strukturę niż ASP .NET Core, ale rdzeń ma własną bibliotekę klas podstawowych . Zamiast tego użyj jej.
Jaider,

Odpowiedzi:

100

Po co tworzyć projekt biblioteki klas ASP.NET 5?

Istnieje wiele korzyści płynących z projektów biblioteki klas ASP.NET 5 ( .kproj) w porównaniu z projektami biblioteki klas ( .csproj):

  1. Biblioteki ASP.NET 5 klasa łatwo obsługiwać krzyż kompilacji projektów do wielu celów, takich jak aspnet50, aspnetcore50, net45i różnych innych odmianach bibliotecznych przenośny klasy. Obejmuje to zaawansowaną obsługę programu Visual Studio dla Intellisense, która powiadamia Cię, które interfejsy API są dostępne dla poszczególnych obiektów docelowych.
  2. Pakiety NuGet są tworzone automatycznie, co jest niezwykle powszechne w przypadku bibliotek klas.
  3. Lepsza produktywność, jeśli chodzi o takie rzeczy, jak automatyczne odświeżanie Eksploratora rozwiązań po zmianie systemu plików. Mniej konfliktów w kontroli źródła podczas próby scalenia kolidujących zmian w pliku * .csproj.
  4. Może być kompilowany na wielu platformach (częściowo dlatego, że nie zależy od programu MSBuild)

Możesz odwoływać się do projektu * .csproj z projektu * .kproj (dzięki nowej wersji zapoznawczej programu Visual Studio 2015 stało się to znacznie łatwiejsze), ale zawsze było to możliwe dzięki kilku ręcznym krokom.

Dlaczego nazwa zawiera „ASP.NET”?

Jeśli chodzi o nazwy, to relikt historii, który wkrótce zostanie omówiony. Nowy typ projektu jest przydatny daleko poza aplikacjami ASP.NET 5. Spodziewaj się zobaczyć nowe nazwy w przyszłej wersji zapoznawczej programu Visual Studio:

  • Aplikacja konsoli .NET (międzyplatformowa)
  • Biblioteka klas .NET (międzyplatformowa)

Aktualizacja 13.05.2015

Wraz z wydaniem programu Visual Studio 2015 RC można zobaczyć zaktualizowane nazwy szablonów projektu:

  • Biblioteka klas (pakiet)
  • Aplikacja konsoli (pakiet)

Korzystają one z project.jsonpliku i środowiska wykonawczego .NET (DNX) do kompilowania, uruchamiania i pakowania (w pakiet NuGet) projektu.

Te szablony projektów nadal są wyświetlane w oknie dialogowym Nowy projekt w węźle „Sieć”, ale teraz są również wyświetlane w głównym węźle „Visual C #”.

Szablony aplikacji VS2015 RC Class Lib / Console

Eilon
źródło
czy możesz rozwinąć # 2 - czy masz na myśli, że Intellisense sugeruje API, a następnie pobiera pakiet nuget? Wpisuję JQuery i to mi to da?
Simon_Weaver
3
@Simon_Weaver Mam na myśli to, że podczas gdy zwykły projekt biblioteki klas tworzy tylko bibliotekę DLL i PDB, nowy generuje NUPKG (pakiet NuGet), który można przesłać do nuget.org.
Eilon
2
.kproj od tego czasu został przemianowany na .xproj
Boris Lipschitz
10

To ciekawa obserwacja, obecny szablon wygeneruje bibliotekę klas zgodną ze środowiskiem uruchomieniowym ASP.NET 5. Nie można tego uzyskać z normalnej biblioteki klas C #.

Złożyłem następujący problem, aby śledzić to pytanie projektowe - https://github.com/aspnet/Home/issues/281

Yishai Galatzer
źródło
Obejrzę twój numer dzięki. Oczywiście ten sam problem z nazewnictwem w przypadku „aplikacji konsoli ASP.NET 5”. Może powinna nazywać się „vNext Console Application”, w przeciwnym razie deweloperzy mogą pomylić ją z jakąś aplikacją konsolową do witryny ASP.NET. Może lokalizacja szablonów powinna zostać przeniesiona z „Visual C # -> Web” do „Visual C # -> vNext”
mkaj
Problem na githubie został zamknięty. Lepsze nazwy projektów - dzięki: github.com/aspnet/Home/issues/281
mkaj
3

Z tego, co rozumiem, jedną z korzyści jest to, że produktem końcowym projektu biblioteki klas ASP.NET 5 jest pakiet NuGet (a nie tylko zestaw .dll).

Możesz wygenerować pakiet NuGet, klikając prawym przyciskiem myszy projekt w programie Visual Studio 2015 i wybierając opcję „Opublikuj ...”. Możesz też użyć „pakietu KPM” w wierszu poleceń.

Masz również możliwość korzystania ze środowiska uruchomieniowego ASP.NET 5 Core, aby Twoja biblioteka mogła działać na wielu platformach.

Thomas Kadlec
źródło
Czy jest źle nazwany? Nie ma nic wspólnego z ASP.NET?
mkaj
1
Jednym z kluczowych celów ASP.NET 5 jest umożliwienie mu działania na wielu platformach. Niektórzy pytali „czy nie powinno to nazywać się .NET Core?” Przynajmniej na razie podejście wieloplatformowe Microsoftu dotyczy tylko aplikacji internetowych (i aplikacji konsolowych) i nie obsługuje programowania na komputery stacjonarne, takiego jak Java. Aby podkreślić, że chodzi o sieć, to wszystko pod nazwą „ASP.NET 5”. Jeśli chcesz utworzyć bibliotekę działającą na wielu platformach, powinna to być biblioteka klas ASP.NET 5.
Thomas Kadlec,
Oznacza to, że mogę powiedzieć szefowi „tak”, kiedy pyta „czy ASP.NET to najlepsza technologia” - dlatego
Simon_Weaver