ASP.NET Core Web 项目文件

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

ASP.NET Core Web 项目文件

在本视频中,我们将探索并了解 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 指定的隐式版本,而不是在包引用上显式设置版本号。 如果目前还不完全清楚,请不要担心。

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

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

摘要

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

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

  1. ASP.NET Core Web 项目文件

    在本节中,我们将探索并了解 asp.net core 项目文件. 我们使用 C#作为编程语言,因此项目文件具有.csproj 扩展名. 如果您使用过以前版本的 ASP.NET,那么您可能对此文件非常熟 ...

  2. 在docker中运行ASP.NET Core Web API应用程序

    本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...

  3. docker中运行ASP.NET Core Web API

    在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过 ...

  4. ASP.NET Core Web API 跨域(CORS) Cookie问题

    身为一个Web API,处理来自跨域不同源的请求,是一件十分合理的事情. 先上已有的文章,快速复制粘贴,启用CORS: Microsoft:启用 ASP.NET Core 中的跨域请求 (CORS) ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 千万级数据迁移工具DataX实践和geom类型扩展

    ## DataX快速入门参考 > 官方https://github.com/alibaba/DataX/blob/master/userGuid.md ## 环境要求 > Linux JD ...

  2. MASMPlus连接出错:error LNK2001: unresolved external symbol _WinMainCRTStartup

    坑:汇编语言第三版使用的是masm5.0,网上找到了一个masm32,一看名字,不就是masm的32位版本吗.然也..这是另外一个软件 MASM32并非是指Microsoft的MASM宏汇编器.MAS ...

  3. Ubuntu设置开机时启动的系统内核版本

    1.查看系统当前安装的所有内核版本 有两种方法 第一种: 可以查看/lib/modules下的文件夹,一个文件夹对应一个内核版本,如下图: 第二种:使用下面的命令查看: dpkg --get-sele ...

  4. Swoole 启动一个服务,开启了哪些进程和线程?

    目录 概述 代码 小结 概述 Swoole 启动一个服务,开启了哪些进程和线程? 为了解决这个问题,咱们启动一个最简单的服务,一起看看究竟启动了哪些进程和线程? 然后结合官网运行流程图,对每个进程和线 ...

  5. Flutter竟然发布了1.5版本!!!!

    2018年2月,Flutter推出了第一个Beta版本,在2018年12月5日,Flutter1.0版本发布,当时用了用觉得这个东西非常好用,对于当时被RN搞的头皮发麻的我来说简直是看到了曙光.而在昨 ...

  6. ASP.NET Core - 基于IHttpContextAccessor实现系统级别身份标识

    问题引入: 通过[ASP.NET Core[源码分析篇] - 认证]这篇文章中,我们知道当请求通过认证模块时,会给当前的HttpContext赋予当前用户身份标识,我们在需要授权的控制器中打上[Aut ...

  7. Java每日一面(Part1:计算机网络)[19/10/13]

    作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1.说说TCP三次握手 1.0 在此之前,什么是TCP? ​ TCP(传输控制协议) ​ 1.面向连接的,可靠的,基于字节流的传输层通信协议 ​ 2. ...

  8. 利用jquery实现前端同步请求---判断姓名是否为空并设置事件

    <%@ page contentType="text/html;charset=UTF-8" language="java" %><html& ...

  9. electronr进行签名与公证

    windows: 1.设置package.json的有关window打包的相关内容 "win": { "icon": "build/icons/ico ...

  10. 剑指offer 25:二叉树中和为某一值的路径

    题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大 ...