首页 文章

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

提问于
浏览
97

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

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

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

3 回答

  • 10

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

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

    • ASP.NET 5类库很容易支持将项目交叉编译到多个目标,例如 aspnet50aspnetcore50net45 和各种其他可移植类库变体 . 这包括对Intellisense的丰富Visual Studio支持,以通知您哪些API可用于哪些目标 .

    • NuGet包是自动创建的,这是一个非常常见的类库 .

    • 当涉及到文件系统更改时自动刷新解决方案资源管理器等内容时,可以提高工作效率 . 尝试合并* .csproj文件中的冲突更改时,源代码管理中的冲突较少 .

    • 可以跨平台编译(部分原因是它不依赖于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 Class Lib / Console App templates

  • 100

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

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

  • 3

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

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

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

相关问题