[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 中的項目文件的生成,以及裏面經常使用的標籤元素。 我但願這篇文章能夠幫助您知足您的需求。 我想收到你的反饋意見。 請發佈您對本文的反饋,問題或意見。

相關文章
相關標籤/搜索