为什么要创build一个ASP.NET 5类库项目?
我想弄清楚什么是“ASP.NET 5类库”(vNext)C#项目与ASP.NET有关。 为什么用这个模板创build一个项目,而不是一个普通的C#“类库”项目?
我喜欢新function,比如project.json文件而不是.csproj文件等,但是当项目与ASP.NET或IIS等无关时,创build“ASP.NET”类库似乎不正确这只是业务逻辑层的一个项目。 一个新的WebApi ASP.NET网站最终会引用这个项目,但在这一点上并不相关。
它只是名字不好吗? 它应该被称为“vNext类库”,而不是使用一个像Web应用程序的图标?
为什么要创build一个ASP.NET 5类库项目?
与类库项目( .csproj)相比,ASP.NET 5类库项目( .kproj)具有许多优点:
- ASP.NET 5类库可轻松支持将项目交叉编译到多个目标,如
aspnet50
,aspnetcore50
,net45
以及各种其他可移植类库变体。 这包括丰富的Visual Studio支持Intellisense来通知哪些API可用于哪些目标。 - NuGet包是自动创build的,这对于类库是非常常见的事情。
- 当涉及到文件系统更改时自动刷新解决scheme资源pipe理器等问题时,生产效率更高。 尝试合并* .csproj文件中的冲突更改时,源代码pipe理中的冲突更less。
- 可以跨平台编译(部分原因是它不依赖于MSBuild)
您可以从* .kproj项目中引用一个* .csproj项目(Visual Studio 2015的新预览版本使这个项目变得更容易),但是通过一些手动步骤总是可以的。
为什么名称中有“ASP.NET”?
就名称而言,这是一个很快将要解决的历史遗迹。 新的项目types远远超出ASP.NET 5应用程序。 预计在Visual Studio的未来预览中会看到新的名称:
- .NET控制台应用程序(跨平台)
- .NET类库(跨平台)
2015年5月13日更新
随着Visual Studio 2015 RC的发布,您可以看到更新的项目模板名称:
- 类库(包)
- 控制台应用程序(包)
这些使用project.json
文件和.NET执行环境(DNX)来构build,运行和打包项目(NuGet包)。
这些项目模板继续显示在“Web”节点下的“新build项目”对话框中,但现在也显示在主“Visual C#”节点中。
这是一个有趣的观察,目前的模板将生成一个与ASP.NET 5运行时兼容的类库。 你不能从普通的C#类库中获得。
我提出以下问题来跟踪这个devise问题 – https://github.com/aspnet/Home/issues/281
从我所了解的一个好处是,ASP.NET 5类库项目的最终产品是一个NuGet包(而不仅仅是.dll程序集)。
您可以通过右键单击Visual Studio 2015中的项目并select“发布…”选项来生成NuGet包。 或者你可以在命令行使用“KPM pack”。
另外,您可以使用ASP.NET 5 Core运行时,以便您的库可以运行跨平台。