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>屬性,被這個坑了一次,這個表示是否複製到本地,不小心改到這個你會發現專案中會無緣無故複製很多檔案
相關文章
- 升級csproj檔案為vs2017工程格式(SDK樣式)
- Roslyn 分析器 讀取 csproj 專案檔案的 AdditionalFiles Item 的 Metadata 配置ROS
- 比對檔案sam檔案的解讀
- 【效能】解讀10053檔案
- .net core遷移實踐:專案檔案csproj的轉換
- 如何保留 wpftmp.csproj 檔案用於除錯除錯
- 檔案排版(文字檔案讀寫)
- deployment.yaml 檔案解讀YAML
- Filebeat的Registry檔案解讀
- .gitignore檔案配置:Altium Designer工程檔案型別Git型別
- VBA建立文字檔案、讀寫文字檔案
- 三維模型檔案格式解讀模型
- php讀取大檔案詳解PHP
- python解壓並讀取檔案Python
- ASP.NET Core - 入口檔案ASP.NET
- ASP.NET Core 配置檔案ASP.NET
- ASP.NET Core 中的檔案提供程式 遍歷資料夾讀取檔案資訊ASP.NET
- java檔案相關(檔案追加內容、檔案內容清空、檔案內容讀取)Java
- Springboot整合MongoDB儲存檔案、讀取檔案Spring BootMongoDB
- Python:讀寫檔案(I/O) | 組織檔案Python
- 讀取檔案流並寫入檔案流
- pandas讀 .sql檔案SQL
- 檔案的讀寫
- 任意檔案讀取
- Python——檔案讀寫Python
- keras讀寫檔案Keras
- 「Python」:檔案讀寫Python
- Java 讀取檔案Java
- Golang 讀、寫檔案Golang
- Python 讀寫檔案Python
- 瞭解如何用 Bash 讀寫檔案
- word檔案怎樣取消只讀模式 把只讀檔案轉化為可編輯檔案模式
- spark直接讀取本地檔案系統的檔案Spark
- C#讀取文字檔案和寫文字檔案C#
- Asp.net Core 和類庫讀取配置檔案資訊ASP.NET
- nodeJS根據檔案字尾名讀取檔案並返回符合檔案總數NodeJS
- 克隆git工程檔案的方法Git
- 痞子衡嵌入式:ARM Cortex-M開發檔案詳解(3)- 工程檔案(.ewp)