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

时间:2015-01-19 21:57:24

标签: c# asp.net asp.net-mvc asp.net-core

我试图找出一个" ASP.NET 5类库" (vNext)C#项目与ASP.NET有关。为什么用这个模板创建一个项目而不仅仅是一个普通的C#"类库"项目

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

这只是名字错误吗?它应该被称为" vNext类库"而不是使用看起来像Web应用程序的图标?

3 个答案:

答案 0 :(得分:100)

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

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

  1. ASP.NET 5类库轻松支持将项目交叉编译到多个目标,例如aspnet50aspnetcore50net45以及各种其他可移植类库变体。这包括对Intellisense的丰富Visual Studio支持,以通知您哪些API可用于哪些目标。
  2. 自动创建NuGet包,这对类库来说非常常见。
  3. 在文件系统更改时自动刷新解决方案资源管理器等方面的效率更高。尝试合并* .csproj文件中的冲突更改时,源代码管理中的冲突较少。
  4. 可以跨平台编译(部分原因是它不依赖于MSBuild)
  5. 你可以从一个* .kproj项目中引用一个* .csproj项目(使用Visual Studio 2015的新预览,这个项目变得更容易了),但总是可以通过一些手动步骤来实现。

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

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

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

    2015年5月13日更新

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

    • 班级图书馆(包)
    • 控制台应用程序(包)

    这些使用project.json文件和.NET执行环境(DNX)来构建,运行和打包(到NuGet包中)项目。

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

    VS2015 RC Class Lib / Console App templates

答案 1 :(得分:10)

这是一个有趣的观察,当前模板将生成一个与ASP.NET 5运行时兼容的类库。你没有从普通的C#类库中得到它。

我提出了以下问题来跟踪此设计问题 - https://github.com/aspnet/Home/issues/281

答案 2 :(得分:3)

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

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

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