[04]ASP.NET Core Web 项目文件

ASP.NET Core Web 项目文件

本文做者:梁桐铭- 微软最有价值专家(Microsoft MVP) 
文章会随着版本进行更新,关注我获取最新版本 
本文出自《从零开始学 ASP.NET Core 与 EntityFramework Core》目录 
视频课程效果更佳:跨平台开发实战掌握 ASP.NET Core 与 EntityFramework Core web

ASP.NET Core Web 项目文件

在本视频中,咱们将探索并了解 asp.net core 项目文件。 咱们使用 C#做为编程语言,所以项目文件具备.csproj 扩展名。编程

若是您使用过之前版本的 ASP.NET,那么您可能对此文件很是熟悉,但此文件中包含的格式和内容在 asp.ne Core 中发生了很大变化。后端

一个重要的变化是,项目文件不包含任何文件夹或文件引用。服务器

简单解释后的意思就是。在之前的 ASP.NET 中,当咱们使用解决方案资源管理器向项目添加文件或文件夹时,项目文件中会包含对该文件或文件夹的引用。可是在 ASP.NET Core 中,项目文件不包含任何文件夹或文件引用。mvc

由文件系统来肯定哪些文件和文件夹属于项目。在项目的根目录中存在的全部文件和文件夹都是属于项目的一部分,将显示在解决方案资源管理器中。 当您在添加文件或文件夹时,该文件或文件夹将会变成项目的一部分,会当即显示在解决方案资源管理器中。 一样,当您在解决方案下的任何文件夹中删除文件或文件夹时,该已删除的文件或文件夹再也不是项目的一部分,会当即从解决方案资源管理器中再也不显示出来。app

另外咱们与项目文件的工做方式也发生了变化。在之前版本的 asp.net 中,为了可以编辑项目文件,咱们首先要卸载项目,编辑并保存项目文件,而后从新加载项目。而在 asp.net core 中,咱们能够编辑项目文件而无需卸载项目。框架

在解决方案中,右键单击项目名称并选择“编辑 StudentManagement.csproj” 文件。asp.net

4 1

这将在编辑器中打开.csproj 文件。编程语言

<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.App" /> <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" /> </ItemGroup> </Project> 
C#

TargetFramework:顾名思义,此元素是用于指定应用程序的目标框架,即您但愿为应用程序提供的 APId 程序集。为了指定目标框架,咱们使用了一个名为 Target Framework Moniker(TFM)的东西。正如您在上面的示例中所看到的,咱们的应用程序针对 TargetFramework 的值为 netcoreapp2.2。netcoreapp2.2 是.NET Core 2.2 的 Moniker。当咱们建立此应用程序时,咱们重新建项目中下拉列表中选择了**.NET Core 2.2**做为目标框架。编辑器

AspNetCoreHostingModel:此元素指定应如何托管 Asp.Net Core 应用程序。它表示程序应该托管 InProcess(进程内)仍是 OutOfProcess(进程外)。 InProcess 的值指定咱们想要使用进程内托管模型,即在 IIS 工做进程(w3wp.exe)中托管咱们的 asp.net core 应用程序。 OutOfProcess 的值指定咱们要使用进程外托管模型,将 Web 请求转发到运行 Kestrel 服务器的后端 ASP.NET Core 应用程序。

咱们将在即将发布的视频中详细讨论 InProcess(进程内)和 OutOfProcess(进程外)托管。

PackageReference:顾名思义,此元素用于包含对为您的应用程序安装的全部 NuGet 包的引用。在项目文件中,咱们有如下 2 个 NuGet 包。

Microsoft.AspNetCore.App
Microsoft.AspNetCore.Razor.Design

Microsoft.AspNetCore.App:此 NuGet 包称为metapackage。 metapackage 自己是没有任何的内容的,它只是包含了其余包的依赖信息。 您能够在解决方案资源管理器中的 NuGet 下找到此元数据包,而 NuGet 又位于**依赖项(Dependencies)**下。展开元数据包时,您能够找到全部依赖项。

4 2

Microsoft.AspNetCore.App里面包含了ASP.NET Core 2.2及更高版本和Entity Framework Core 2.2及更高版本的全部组件。

在 ASP.NET Core 2.1 及更高版本的默认项目模板,都是会使用这个包。

请注意,metapackage 中没有版本号。 未指定版本时,SDK 会指定隐式版本。 .NET Core 团队建议依赖 SDK 指定的隐式版本,而不是在包引用上显式设置版本号。 若是目前还不彻底清楚,请不要担忧。

咱们将在即将发布的视频中详细讨论metapackage和隐式版本。

Microsoft.AspNetCore.Razor.Design:此软件包包含对 Razor 的 MSBuild 支持,并由 Microsoft.AspNetCore.App 的 metapackage 包引用。

摘要

在本文中,我尝试解释了在 ASP.NET Core 中的项目文件的生成,以及里面经常使用的标签元素。 我但愿这篇文章能够帮助您知足您的需求。 我想收到你的反馈意见。 请发布您对本文的反馈,问题或意见。

相关文章
相关标签/搜索