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

C# 为什么要创建ASP.NET 5类库项目?,c#,asp.net,asp.net-mvc,asp.net-core,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应用程

我试图弄清楚“ASP.NET 5类库”(vNext)C#项目与ASP.NET有什么关系。为什么要用这个模板创建一个项目,而不仅仅是一个普通的C#“类库”项目

我喜欢这些新特性,比如project.json文件而不是.csproj文件等,但当项目与ASP.NET或IIS等无关时,创建“ASP.NET”类库似乎是不对的。它只是一个用于业务逻辑层的项目。一个新的WebApi ASP.NET网站最终将引用此项目,但这与此无关


只是名字不好吗?它应该被称为“vNext类库”,而不是使用看起来像web应用程序的图标吗?

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

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


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

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

为了跟踪这个设计问题,我提交了以下问题-

为什么要创建ASP.NET 5类库项目? ASP.NET 5类库项目(.kproj)比类库项目(.csproj)有许多好处:

  • ASP.NET 5类库很容易支持跨多个目标的交叉编译项目,例如
    aspnet50
    aspnetcore50
    net45
    ,以及各种其他可移植类库变体。这包括对Intellisense的丰富Visual Studio支持,以通知您哪些API可用于哪些目标
  • NuGet包是自动创建的,这是类库中非常常见的事情
  • 在文件系统发生更改时自动刷新解决方案资源管理器等方面,生产效率更高。尝试合并*.csproj文件中的冲突更改时,源代码管理中的冲突会减少
  • 可以跨平台编译(部分原因是它不依赖于MSBuild)
  • 您可以从*.kproj项目中引用*.csproj项目(通过新的Visual Studio 2015预览版,这一点变得更加容易),但通过一些手动步骤,这始终是可能的

    为什么名称中有“ASP.NET”? 就名字而言,这是一个很快就会被提及的历史遗迹。新的项目类型远比ASP.NET 5应用程序有用。希望在未来的Visual Studio预览中看到新名称:

    • .NET控制台应用程序(跨平台)
    • .NET类库(跨平台)
    更新日期:2015年5月13日 随着的发布,您可以看到更新的项目模板名称:

    • 类库(包)
    • 控制台应用程序(包)
    它们使用
    project.json
    文件和.NET执行环境(DNX)来构建、运行和打包(到NuGet包中)项目

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


    它的名字不好吗?与ASP.NET无关?ASP.NET 5的关键目标之一是允许它跨平台运行。有人问:“这不应该被称为.NETCore吗?”至少目前微软的多平台方法只涉及web(和控制台应用程序),不支持像Java那样的桌面开发。为了强调这是关于网络的,他们以“ASP.NET 5”的名义给它打上了品牌。如果你想制作一个跨平台运行的库,它应该是一个ASP.NET 5类库。这意味着当我的老板问我“ASP.NET是最好的技术吗?”时,我可以告诉他“是的”——这就是为什么我会关注你的问题,谢谢。显然,与“ASP.NET 5控制台应用程序”相同的命名问题。可能应该称为“vNext控制台应用程序”,否则开发者可能会将其与ASP.NET网站的某种控制台应用程序混淆。也许模板的位置应该从“Visual C-->Web”移到“Visual C-->vNext”github问题已经解决。更好的项目名称-谢谢:你能扩展一下#2吗-你是说intellisense建议一个API,然后为你下载nuget软件包?我输入JQuery,它会给我?@Simon_Weaver我的意思是,常规类库项目只生成一个DLL和PDB,而新的项目生成一个NUPKG(NuGet包)这可以上传到nuget.org..kproj从此被重命名为.xprojIs他们认为什么时候可以添加good old Class Library类型的现有项目?这是我最后一次考虑将MVC 5迁移到ASP.NET 5 MVC 6。“ASP.NET 5类库”的框架与ASP.NET Core不同,但Core有自己的核心类库,请使用它。