c# mvc教程 - 为什么要创建一个ASP.NET 5类库项目?




2.0教程 core教程 (4)

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

ASP.NET 5类库项目( .kproj)通过类库项目( .csproj)具有许多优点:

  1. ASP.NET 5类库轻松支持将项目交叉编译为多个目标,如aspnet50aspnetcore50net45以及各种其他便携式类库变体。 这包括丰富的Visual Studio对Intellisense的支持,以通知哪些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#”节点中。

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

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

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


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

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


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

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

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


我遇到了同样的问题 - 尝试在Visual Studio中调试工作时,很多时间都没有了。

它最终成为Nuget - 我有3个版本的Newtonsoft.Json(跨越7个C#项目)。 该解决方案将编译但不可调试。

我通过在Nuget的包管理器控制台中运行以下内容来解决该问题:

PM>更新包Newtonsoft.Json





c# asp.net asp.net-mvc asp.net-core