为什么要创建一个ASP.NET 5类库项目?


98

我试图弄清楚“ ASP.NET 5类库”(vNext)C#项目与ASP.NET有什么关系。为什么要使用此模板而不是常规的C#“类库”项目创建项目?

我喜欢新功能,例如project.json文件而不是.csproj文件等,但是当项目与ASP.NET或IIS等无关时,创建“ ASP.NET”类库似乎并不正确这只是业务逻辑层的一个项目。一个新的WebApi ASP.NET网站最终将引用此项目,但目前不相关。

它只是名字不好吗?是否应该仅将其称为“ vNext类库”而不使用看起来像Web应用程序的图标?


他们认为何时可以添加类型良好的旧类库的现有项目是否有估算?这是我期望将MVC 5移植到ASP.NET 5 MVC 6迁移的最后一个想法。
radbyx

“ ASP.NET 5类库”具有与ASP .NET Core不同的框架,但是core具有自己的Core Class Library,请改用它。
Jaider

Answers:


100

为什么要创建一个ASP.NET 5类库项目?

与类库项目( .csproj)相比,ASP.NET 5类库项目(.kproj)有许多优点:

  1. ASP.NET 5类库容易地支持交叉编译项目到多个目标,诸如aspnet50aspnetcore50net45,和各种其它便携式类库变化。这包括对Intellisense的丰富Visual Studio支持,以通知您哪些API可用于哪些目标。
  2. NuGet软件包是自动创建的,这对于类库而言是非常普遍的事情。
  3. 当文件系统更改时自动刷新解决方案资源管理器时,可以提高生产率。尝试合并* .csproj文件中的冲突更改时,源代码管理中的冲突较少。
  4. 可以跨平台编译(部分是因为它不依赖于MSBuild)

您可以从* .kproj项目中引用* .csproj项目(使用Visual Studio 2015的新预览使此操作变得更加容易),但是始终可以通过一些手动步骤来实现。

为什么名称中包含“ ASP.NET”?

就名称而言,这是历史遗迹,将很快得到解决。新项目类型的作用远远超出ASP.NET 5应用程序。期望在以后的Visual Studio预览中看到新名称:

  • .NET控制台应用程序(跨平台)
  • .NET类库(跨平台)

更新5/13/2015

随着Visual Studio 2015 RC的发布,您可以看到更新的项目模板名称:

  • 类库(包)
  • 控制台应用程序(包)

它们使用project.json文件和.NET执行环境(DNX)来构建,运行和打包项目(将其打包为NuGet软件包)。

这些项目模板继续显示在“ Web”节点下的“新建项目”对话框中,但现在也显示在主“ Visual C#”节点中。

VS2015 RC类库/控制台应用程序模板


您可以在#2上进行扩展-您是说intellisense建议使用API​​,然后为您下载nuget软件包吗?我输入JQuery,它将提供给我吗?
Simon_Weaver 2015年

3
@Simon_Weaver我的意思是,尽管常规的类库项目仅生成DLL和PDB,但是新的类库会生成一个NUPKG(NuGet包),该文件可以上传到nuget.org。
2015年

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 2015年

github问题已经关闭。更好的项目名称-谢谢:github.com/aspnet/Home/issues/281
mkaj 2015年

3

据我了解,一个好处是ASP.NET 5类库项目的最终产品是NuGet包(而不只是.dll程序集)。

您可以通过右键单击Visual Studio 2015中的项目并选择“发布...”选项来生成NuGet包。或者,您可以在命令行中使用“ KPM pack”。

另外,您还可以使用ASP.NET 5 Core运行时,以便您的库可以跨平台运行。


它的名字不好吗?与ASP.NET无关吗?
mkaj 2015年

1
ASP.NET 5的主要目标之一是使其可以跨平台运行。有人问“这不应该叫做.NET Core吗?” 至少就目前而言,微软的多平台方法仅与Web(和控制台应用程序)有关,并且不支持Java之类的桌面开发。为了强调它与网络有关,他们将所有商标都冠以“ ASP.NET 5”的名称。如果要生成一个跨平台运行的库,则应为ASP.NET 5类库。
托马斯·卡德莱克

这意味着当他问“ ASP.NET是最好的技术”时,我可以告诉老板“是”-这就是为什么
Simon_Weaver
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.