在本节中,我们将探索并了解 asp.net core 项目文件。 我们使用 C#作为编程语言,因此项目文件具有.csproj 扩展名。

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

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

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

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

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

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

这将在编辑器中打开.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)**下。展开元数据包时,您可以找到所有依赖项。

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

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

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

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

欢迎添加个人微信号:Like若所思。

欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!

ASP.NET Core Web 项目文件的更多相关文章

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

    ASP.NET Core Web 项目文件 本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 文章会随着版本进行更新,关注我获取最新版本 本文出自<从零开始学 ASP.NET ...

  2. 从ASP.Net Core Web Api模板中移除MVC Razor依赖项

    前言 :本篇文章,我将会介绍如何在不包括MVC / Razor功能和包的情况下,添加最少的依赖项到ASP.NET Core Web API项目中. 一.MVC   VS WebApi (1)在ASP. ...

  3. [03-2]VS2017 创建 ASP.NET Core Web 程序

    VS2017 创建 ASP.NET Core Web 程序 本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 文章会随着版本进行更新,关注我获取最新版本 本文出自<从零开始学 ...

  4. [03]使用 VS2019 创建 ASP.NET Core Web 程序

    使用 VS2019 创建 ASP.NET Core Web 程序 本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 文章会随着版本进行更新,关注我获取最新版本 本文出自<从零开 ...

  5. asp.net core web api 生成 swagger 文档

    asp.net core web api 生成 swagger 文档 Intro 在前后端分离的开发模式下,文档就显得比较重要,哪个接口要传哪些参数,如果一两个接口还好,口头上直接沟通好就可以了,如果 ...

  6. ASP.NET Core Web应用在发布时选择是否对视图进行编译

    原文:ASP.NET Core Web应用在发布时选择是否对视图进行编译 在我们发布ASP.NET Core Web应用程序时,选择以文件形式发布,发布方法选择文件系统 默认情况下,会把Views的视 ...

  7. Azure 部署 Asp.NET Core Web App

    在云计算大行其道的时代,当你在部署一个网站时,第一选择肯定是各式各样的云端服务.那么究竟使用什么样的云端服务才能够以最快捷的方式部署一个 ASP.NET Core 的网站呢?Azure 的 Web A ...

  8. 使用 Swagger 自动生成 ASP.NET Core Web API 的文档、在线帮助测试文档(ASP.NET Core Web API 自动生成文档)

    对于开发人员来说,构建一个消费应用程序时去了解各种各样的 API 是一个巨大的挑战.在你的 Web API 项目中使用 Swagger 的 .NET Core 封装 Swashbuckle 可以帮助你 ...

  9. 在ASP.NET Core Web API上使用Swagger提供API文档

    我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页 ...

随机推荐

  1. Tomcat安装、使用(Windows)

    一.下载.安装 1.下载 进官网下载 : https://tomcat.apache.org/ 选择自己适合的版本.在这里演示的是下载 Tomcat 7(解压安装版). 2.解压.启动tomcat 解 ...

  2. QT5.5+VS2013编译安装QtCharts (ZZ)

    环境 1.Windows 10 -x64: 2.MSVC 2013 -x64: 3.Qt5.5.1 -x86 and -x64. 编译过程 准备工作 1.安装ActivePerl 安装过程同一般软件安 ...

  3. 区块链社交APP协议分析预告

    2017年,比特币的火热,直接导致了代币市场的繁荣: 2018年,作为信用体系的未来解决方案,区块链引发了互联网原住民的淘金热. 作为风口上的引流神器,区块链技术与社交网络结合起来,产生了一系列区块链 ...

  4. ABP进阶教程7 - 功能按钮

    点这里进入ABP进阶教程目录 下载插件 打开Datatables官网(https://datatables.net/download/) 勾选Extensions/Buttons,下载插件,复制到JD ...

  5. git设置多账户

    1.设置公司gitlab 0.先给git 设置一个全局的账户, 如果是公司的电脑环境, 全局的账户当然是用你在公司的邮箱了 git config --global user.name "yo ...

  6. 5个 JS 解构有趣的用途

    摘要: 玩转ES6解构赋值. 原文:5个 JS 解构有趣的用途 译者:前端小智 1. 交换变量 通常交换两个变量的方法需要一个额外的临时变量,来看看例子: let a = 1; let b = 2; ...

  7. [20190530]ORACLE 18c - ALTER SEQUENCE RESTART.txt

    [20190530]ORACLE 18c - ALTER SEQUENCE RESTART.txt --//以前遇到要重置或者调整seq比较麻烦,我有时候采用比较粗暴的方式就是删除重建.--//18c ...

  8. rabbitmq和kafka大概比较

    两者都是一个分布式架构 kafka 具有较高的吞吐量,rabbimq 吞吐量较小 rabbitmq 的可靠性更好,确认机制(生产者和 exchange,消费者和队列),支持事务,但会造成阻塞,委托(添 ...

  9. openresty配置

    目录 环境 wsl安装 openresty安装 openssl版本问题 Lua模块安装 openresty使用 nginx常用命令 nginx.conf 配置 lua 的一些坑 OpenResty缓存 ...

  10. 爬虫scrapy组件 请求传参,post请求,中间件

    post请求 在scrapy组件使用post请求需要调用 def start_requests(self): 进行传参再回到 yield scrapy.FormRequest(url=url,form ...