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.2TargetFramework>
<AspNetCoreHostingModel>InProcessAspNetCoreHostingModel>
PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
ItemGroup>
Project>
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中的專案檔案的生成,以及裡面常用的標簽元素。
我希望這篇文章可以幫助您滿足您的需求。我想收到你的反饋意見。請釋出您對本文的反饋,問題或意見。