Зачем создавать проект библиотеки классов ASP.NET 5?

98

Я пытаюсь понять, какое отношение имеет проект C # «Библиотека классов ASP.NET 5» (vNext) к ASP.NET. Зачем создавать проект с этим шаблоном, а не просто проект «Библиотека классов» C #?

Мне нравятся новые функции, такие как файл project.json, а не файл .csproj и т. Д., Но мне кажется неправильным создавать библиотеку классов «ASP.NET», когда проект не имеет ничего общего с ASP.NET или IIS и т. Д. Это просто проект для уровня бизнес-логики. Новый веб-сайт WebApi ASP.NET в конечном итоге будет ссылаться на этот проект, но на данный момент это не актуально.

Это просто плохо названо? Должен ли он называться просто «Библиотека классов vNext» и не использовать значок, похожий на веб-приложение?

mkaj
источник
Есть ли оценка, когда они думают, что можно добавить существующий проект типа старой доброй библиотеки классов? Это последняя мысль, которую я ожидал перенести с MVC 5 на ASP.NET 5 MVC 6.
radbyx
«Библиотека классов ASP.NET 5» имеет другую структуру, чем ASP .NET Core, но ядро ​​имеет собственную библиотеку классов ядра , используйте ее.
Jaider

Ответы:

100

Зачем создавать проект библиотеки классов ASP.NET 5?

Есть ряд преимуществ проектов библиотеки классов ASP.NET 5 ( .kproj) по сравнению с проектами библиотеки классов ( .csproj):

  1. Библиотеки ASP.NET 5 класса легко поддерживать кросс-компиляцию проектов для нескольких целей, такие , как aspnet50, aspnetcore50, net45и различных других варианты библиотеки портативного класса. Это включает в себя обширную поддержку Intellisense в Visual Studio, чтобы уведомить вас, какие API доступны для каких целей.
  2. Пакеты NuGet создаются автоматически, что очень часто бывает с библиотеками классов.
  3. Повышение производительности, когда речь идет о таких вещах, как автоматическое обновление обозревателя решений при изменении файловой системы. Меньше конфликтов в системе управления версиями при попытке объединить конфликтующие изменения в файле * .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) проекта.

Эти шаблоны проектов по-прежнему отображаются в диалоговом окне «Новый проект» в узле «Интернет», но теперь также отображаются и в главном узле «Visual C #».

VS2015 RC Class Lib / шаблоны консольных приложений

Эйлон
источник
Можете ли вы расширить № 2 - вы имеете в виду, что intellisense предлагает API, а затем загружает для вас пакет nuget? Я набираю JQuery, и он мне его отдаст?
Simon_Weaver
3
@Simon_Weaver Я имею в виду, что в то время как обычный проект библиотеки классов создает только DLL и PDB, новый генерирует NUPKG (пакет NuGet), который можно загрузить на nuget.org.
Эйлон
2
.kproj с тех пор был переименован в .xproj
Boris Lipschitz
10

Это интересное наблюдение, текущий шаблон будет генерировать библиотеку классов, совместимую со средой выполнения ASP.NET 5. Вы не получите этого из обычной библиотеки классов C #.

Я подал следующую проблему для отслеживания этого вопроса о дизайне - https://github.com/aspnet/Home/issues/281

Ишай Галацер
источник
Я посмотрю ваш выпуск, спасибо. Очевидно, та же проблема именования с «Консольным приложением ASP.NET 5». Может быть, его следует называть «консольным приложением vNext», иначе разработчики могут спутать его с каким-то консольным приложением на веб-сайте ASP.NET. Возможно, расположение шаблонов следует переместить из «Visual C # -> Web» в «Visual C # -> vNext»
mkaj
Вопрос на github закрыт. Лучшие названия проектов - спасибо: github.com/aspnet/Home/issues/281
mkaj
3

Насколько я понимаю, одно из преимуществ заключается в том, что конечным продуктом проекта библиотеки классов ASP.NET 5 является пакет NuGet (а не просто сборка .dll).

Вы можете создать пакет NuGet, щелкнув проект правой кнопкой мыши в Visual Studio 2015 и выбрав параметр «Опубликовать ...». Или вы можете использовать «KPM pack» в командной строке.

Кроме того, у вас есть возможность использовать среду выполнения ASP.NET 5 Core, чтобы ваша библиотека могла работать на разных платформах.

Томас Кадлец
источник
Это плохо названо? Не имеет ничего общего с ASP.NET?
mkaj
1
Одна из ключевых целей ASP.NET 5 - позволить ему работать на разных платформах. Некоторые спрашивали: «Разве это не должно называться .NET Core?» По крайней мере, на данный момент многоплатформенный подход Microsoft касается только Интернета (и консольных приложений) и не поддерживает разработку для настольных компьютеров, такую ​​как Java. Чтобы подчеркнуть, что это касается Интернета, они все это называют «ASP.NET 5». Если вы хотите создать кросс-платформенную библиотеку, это должна быть библиотека классов ASP.NET 5.
Thomas Kadlec
Это означает, что я могу сказать своему боссу «да», когда он спросит: «ASP.NET - лучшая технология?» - вот почему
Simon_Weaver