Навіщо створювати проект бібліотеки класів ASP.NET 5?


98

Я намагаюся розібратися, що стосується проекту "Бібліотека класів ASP.NET 5" (vNext) C # з ASP.NET. Навіщо створювати проект за допомогою цього шаблону, а не просто звичайний проект C # "Class Library"?

Мені подобаються нові функції, такі як файл project.json, а не .csproj файл тощо, але, здається, невірно створити бібліотеку класів "ASP.NET", коли проект не має нічого спільного з ASP.NET або IIS тощо Це просто проект для шару бізнес-логіки. Новий веб-сайт WebApi ASP.NET згодом посилається на цей проект, але це не актуально на даний момент.

Це просто погано названо? Чи слід його просто називати "vNext Class Library", а не використовувати піктограму, схожу на веб-додаток?


Чи є оцінка, коли вони думають, що можливо додати існуючий проект старої гарної бібліотеки класів? Це остання думка, яку я розраховував перенести міграцію MVC 5 на ASP.NET 5 MVC 6.
radbyx

"Бібліотека класів ASP.NET 5" має інші рамки, ніж ASP .NET Core, але у ядра є своя бібліотека Core Class , використовуйте це замість цього.
Джайдер

Відповіді:


100

Навіщо створювати проект бібліотеки класів ASP.NET 5?

Є ряд переваг проектів бібліотеки класів ASP.NET 5 ( .kproj) над проектами бібліотеки класів ( .csproj):

  1. Бібліотеки ASP.NET 5 класу легко підтримувати крос-компіляцію проектів для кількох цілей, такі , як aspnet50, aspnetcore50, net45і різних інших варіанти бібліотеки портативного класу. Сюди входить розширена підтримка Visual Studio для Intellisense, щоб повідомляти вам, які API доступні, для яких цілей.
  2. Пакети NuGet створюються автоматично, що є надзвичайно поширеною справою з бібліотеками класів.
  3. Більш висока продуктивність, коли справа стосується автоматичного оновлення Solution Explorer при зміні файлової системи. Менше конфліктів у контролі джерела при спробі об'єднання конфліктуючих змін у файлі * .csproj.
  4. Можна скласти крос-платформу (частково тому, що це не залежить від MSBuild)

Ви можете посилатися на проект * .csproj з проекту * .kproj (це було просто полегшено з новим попереднім переглядом Visual Studio 2015), але це завжди було можливим за допомогою певних кроків вручну.

Чому назва має "ASP.NET" в ньому?

Що стосується імен, то це пережиток історії, який незабаром буде вирішено. Новий тип проекту корисний далеко поза програмами ASP.NET 5. Очікуйте побачити нові імена в майбутньому попередньому перегляді Visual Studio:

  • Додаток консолі .NET (міжплатформна)
  • Бібліотека класів .NET (міжплатформна)

Оновлення 13.05.2015

З випуском Visual Studio 2015 RC ви можете побачити оновлені назви шаблонів проекту:

  • Бібліотека класів (пакет)
  • Застосування консолі (пакет)

Вони використовують project.jsonфайл і середовище виконання .NET (DNX) для складання, запуску та упаковки (в пакет NuGet) проекту.

Ці шаблони проектів продовжують відображатися в діалоговому вікні "Новий проект" під вузлом "Веб", але тепер також відображаються в головному вузлі "Візуальний C #".

VS2015 Шаблони додатків Lib / Console RC Class RC


чи можете ви розгорнутись на номер 2 - ви маєте на увазі, що intellisense пропонує API, а потім завантажує пакет «nuget» для вас? Я набираю JQuery, і він мені це передасть?
Simon_Weaver

3
@Simon_Weaver Я маю на увазі, що хоча звичайний проект бібліотеки класів створює лише DLL та PDB, новий генерує NUPKG (пакет NuGet), який можна завантажити на nuget.org.
Ейлон

2
.kproj відтоді перейменований на .xproj
Борис Ліпшиц

10

Це цікаве спостереження: поточний шаблон генерує бібліотеку класів, сумісну з режимом виконання ASP.NET 5. Ви не отримуєте цього з звичайної бібліотеки класів C #.

Я подав такий випуск для відстеження цього дизайнерського питання - https://github.com/aspnet/Home/isissue/281


Я буду дивитись вашу проблему дякую. Однозначно проблема з називанням "ASP.NET 5 Console Application". Можливо, його слід назвати "vNext Console Application", інакше розробники можуть переплутати його з якоюсь консольною програмою на веб-сайті ASP.NET. Можливо, розташування шаблонів слід перемістити з "Visual C # -> Web" на "Visual C # -> vNext"
mkaj

Випуск github закритий. Краще назви проектів - спасибі: github.com/aspnet/Home/isissue/281
mkaj

3

З того, що я розумію, одна перевага полягає в тому, що кінцевим продуктом проекту бібліотеки класів ASP.NET 5 є пакет NuGet (а не просто збірка .dll).

Ви можете створити пакет NuGet, клацнувши правою кнопкою миші проект у Visual Studio 2015 та вибравши опцію "Опублікувати ...". Або ви можете використовувати "пакет KPM" у командному рядку.

Крім того, у вас є можливість використовувати час виконання програми ASP.NET 5 Core, щоб ваша бібліотека могла працювати між платформою.


Це погано названо? Не має нічого спільного з ASP.NET?
mkaj

1
Однією з ключових цілей ASP.NET 5 є дозволити їй запускати крос-платформу. Деякі запитували "чи не слід це називати .NET Core замість цього?" Принаймні поки що багатоплатформенний підхід Microsoft стосується лише Інтернету (та консольних додатків) і не підтримує розробку настільних ПК, як Java. Щоб підкреслити, що це стосується Інтернету, вони брендують все це під назвою "ASP.NET 5". Якщо ви хочете створити бібліотеку, яка працює на крос-платформі, це повинна бути бібліотека класів ASP.NET 5 класів.
Томас Кадлец

Це означає, що я можу сказати своєму начальникові "так", коли він запитує: "ASP.NET - найкраща технологія" - саме тому
Simon_Weaver
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.