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

mka*_*kaj 98 c# asp.net asp.net-mvc asp.net-core

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

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

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

Eil*_*lon 100

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

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

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

您可以从*.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类Lib/Console应用程序模板

  • @Simon_Weaver我的意思是,虽然常规的类库项目只生成一个DLL和PDB,但新的生成一个NUPKG(NuGet包),可以上传到nuget.org. (3认同)
  • .kproj从那以后被重命名为.xproj (2认同)

Yis*_*zer 10

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

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