ASP.NET工程檔案(.csproj)檔案解讀
C#專案中都會有一個不起眼的檔案,字尾名csproj,很多人都會忽視它。其實,這個檔案在專案中起到舉足輕重的地位。這個檔案其實是一個專案的工程檔案,不過,正常開發中,這個檔案基本上不會需要考慮到。這時候,你應該會問這個檔案作用,其實,這個檔案記錄了與工程有關的相關資訊,例如包含的檔案,程式的版本,所生成的檔案的型別和位置的資訊等。
這個檔案其實是給編譯工具看的,這個檔案記錄了這個專案的專案名,專案引用,專案中檔案,專案用到的.net版本等等一系列資訊,因為之前在做持續整合遇到編譯問題,所以花了點時間學習這個檔案。
其中常見節點元素如下:
1)Project 節點
<Project ></Project >這個元素是工程檔案的根節點,所有其他節點都是在這個節點之下,用於表示專案的範圍
2)Property元素
在專案中你肯定需要經常訪問一些資訊,這個節點用於記錄專案資訊的,例如需要建立的路徑名、最終生成的程式集名稱等。以name/value的形式新增進Property,隨後就可以以$(PropertyName)的形式訪問。
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{F630BB4D-A352-40C1-9C6B-CD9C5F77EAF1}</ProjectGuid>
<OutputType>Library</OutputType>
...
<RootNamespace>TCBase.Model</RootNamespace>
<AssemblyName>TCBase.Model</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
...
</PropertyGroup>
這裡就需要解釋下節點的意思了:
Configuration節點,可以用於MSBuild傳參,後續寫關於MSBuild會詳細列出,這裡引數用於MSBuild編譯方式,一種是Dabug,還有一種是Release,直觀就是檔案生成bin目錄中生成是Debug還是Release
Platform節點,這個是表示執行解決方案平臺,在VS專案屬性中修改,VS中“配置管理器”-->“活動解決方案平臺”修改
ProkectGuid節點,這個我理解為這個專案在這個解決方案中的唯一標示,可以說是名字,瞭解的可以補充。
RootNamespace節點,這個表示這個專案的預設根名稱空間名字。
AssemblyName節點,這個表示專案生成dll後的名字。
注意,一般一個工程檔案會有多個PropertyGroup節點,其中的Platform,AssemblyName等都可以不相同,編譯的時候會由傳入的引數決定的,如Debug會選擇Debug的節點,Release會選擇Release節點,預設會使用第一個,不過不建議修改,vs會生成的,除非你對這個非常熟,否則容易改錯。
3)Item元素
在整個專案檔案中提供原始碼檔案、引用的程式集名稱、需要嵌入的圖示資源等,最為常用的部分。
語法:<Item Type=”TheType”Include=”NameOrPath” />
Type表示資源的類別
.cs檔案設為Source
程式集為Reference
Include是具體的資源,可以使路徑或者C#原始碼檔案的名稱。如要表示當前專案所有cs檔案,可以使用萬用字元*:
<
Item
Type
="
Source
"
Include
="
*.cs
" />
後面使用的時候就通過@(Source)來呼叫
基本Item節點有三種,一是引用dll檔案,一是原始碼檔案,還有一個是當前解決方案中的專案。
4)ItemGroup元素
第一種
<ItemGroup>
<ReferenceInclude="CnCookieInterface">
<HintPath>..\TCWeb.SolutionItems\CnCookieInterface.dll</HintPath>
</Reference>
<ReferenceInclude="System" />
</ItemGroup>
其中Include後面表示引用在VS中顯示引用的名字,這裡可以修改,VS預設和檔名相同,如果是系統的就不需要HintPath節點,這個節點表示引用的dll路徑,這裡一般是相對路徑,注意,這裡路徑錯了,引用就找不到了,vs中有問題可以直接到這裡修改。
第二種
<ItemGroup>
<CompileInclude="Car\CarOrderService.cs" />
<CompileInclude="Common\CashCouponService.cs" />
</ItemGroup>
這個是當前專案的原始碼檔案即.cs檔案。
第三種
<ItemGroup>
<ProjectReferenceInclude="..\TCWeb.Core\TCWeb.Core.csproj">
<Project>{AC131436-6FB7-4332-BC6C-7950ECCE55BD}</Project>
<Name>TCWeb.Core</Name>
</ProjectReference>
</ItemGroup>
這個是引用當前解決方案中的專案,Include中表示引用專案的工程檔案,Name表示當前專案名,Project系統生成的,就是上面說的<ProjectGuid>幾點
總體上主要就這三種引用的方式
PS:
<Reference Include="FlightInter.MerchantService.Business ">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\ExtDll\FlightInter.MerchantService.Business.dll</HintPath>
<Private>False</Private>
</Reference>
注意其中的<Private>屬性,被這個坑了一次,這個表示是否複製到本地,不小心改到這個你會發現專案中會無緣無故複製很多檔案
相關文章
- 比對檔案sam檔案的解讀
- 升級csproj檔案為vs2017工程格式(SDK樣式)
- Roslyn 分析器 讀取 csproj 專案檔案的 AdditionalFiles Item 的 Metadata 配置ROS
- .net core遷移實踐:專案檔案csproj的轉換
- 檔案排版(文字檔案讀寫)
- Filebeat的Registry檔案解讀
- deployment.yaml 檔案解讀YAML
- 在.csproj檔案中增加npm, bower, gulp, webpack的構建NPMWeb
- 檔案讀寫
- VBA建立文字檔案、讀寫文字檔案
- 檔案操作之按照行讀寫檔案
- 【效能】解讀10053檔案
- php讀取大檔案詳解PHP
- ASP.NET Core 中的檔案提供程式 遍歷資料夾讀取檔案資訊ASP.NET
- java檔案相關(檔案追加內容、檔案內容清空、檔案內容讀取)Java
- Java 讀檔案寫檔案 韓文 中文 亂碼問題解決方案Java
- 讀取檔案流並寫入檔案流
- ASP.NET Core 配置檔案ASP.NET
- ASP.NET Core - 入口檔案ASP.NET
- ASP.NET 檔案下載ASP.NET
- ASP.NET中下載檔案ASP.NET
- linux下解壓.gz檔案、.cpio檔案、zip檔案Linux
- Golang 讀、寫檔案Golang
- Java 讀取檔案Java
- keras讀寫檔案Keras
- perl 讀寫檔案
- 檔案讀寫IO
- trace檔案閱讀
- tiff檔案讀取
- 任意檔案讀取
- 檔案的讀寫
- pandas讀 .sql檔案SQL
- .gitignore檔案配置:Altium Designer工程檔案型別Git型別
- 瞭解如何用 Bash 讀寫檔案
- python解壓並讀取檔案Python
- 詳解python檔案讀寫操作Python
- 網路配置檔案快速解讀(轉)
- Asp.net Core 和類庫讀取配置檔案資訊ASP.NET