Ano ang CSProj file?
Ang mga file na may extension ng CSPROJ ay kumakatawan sa isang C# project file na naglalaman ng listahan ng mga file na kasama sa isang proyekto kasama ang mga reference sa mga system assemblies. Kapag ang isang bagong proyekto ay sinimulan sa Microsoft VIiual Studio, makakakuha ka ng isang .csproj file kasama ang pangunahing solusyon (.sln) na file. Kung mayroong higit sa isang asembliya sa isang proyekto, magkakaroon din ng pantay na bilang ng mga file ng proyekto kung saan ang .sln file ay nag-uugnay sa lahat ng ito bilang bahagi ng proyekto. Ang mga nilalaman ng file na ito ay tumutukoy sa lahat ng mga kinakailangan na kinakailangan upang mabuo ang proyekto tulad ng nilalaman na isasama, ang mga kinakailangan sa platfrom, impormasyon ng bersyon, web server o mga setting ng server ng database, at ang mga gawain na dapat gawin. Ang mga nilalaman ng isang file ng proyekto ay nakaayos sa format ng XML file at maaaring mabuksan sa anumang text editor para sa pag-edit pati na rin sa pagtingin. Nagbibigay din ito ng lohikal na pagtingin sa mga file ng proyekto para sa wastong pag-aayos.
CSPROJ File Format
Ang mga developer ay maaaring gumawa ng mga file ng proyekto nang mag-isa pati na rin ang paggalang sa MSBuild XML Schema. Ang bukas at transparent na istraktura ng mga file ng proyekto ay nagbibigay-daan sa mga developer ng application na magpataw ng sopistikado at pinong kontrol sa kung paano binuo at ipinapatupad ang mga proyekto. Ang mga nilalaman ng naturang file ng proyekto ay may napakalinaw na kaugnayan sa kanilang mga sarili. Ipinapakita ng sumusunod na figure ang mga pangunahing elemento at ang kaugnayan sa pagitan ng mga ito para sa naturang project file.
Ang mga sumusunod na seksyon ay nagpapaliwanag ng mga elemento ng format ng file para sa isang file ng proyekto.
Project Element
Ang Project element ay ang root element ng bawat project file. Kinikilala nito ang XML schema para sa file ng proyekto at maaaring magsama ng mga katangian upang tukuyin ang mga entry point para sa proseso ng pagbuo.
<Project ToolsVersion#"4.0" DefaultTargets#"FullPublish"
xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
Mga Katangian at Kundisyon
Ang mga ari-arian ay kumakatawan sa kinakailangang impormasyong kinakailangan upang bumuo ng isang proyekto. Tinutukoy ang mga naturang property sa loob ng isang PropertyGroup element. Binubuo ang mga property na ito ng mga pares ng key-value kung saan ang pangalan ng elemento ng property ay tumutukoy sa property key at ang nilalaman ng elemento ay tumutukoy sa value ng property.Halimbawa, maaari mong tukuyin ang mga property na pinangalanang ServerName at ConnectionString para mag-imbak ng static na pangalan ng server at string ng koneksyon.
<PropertyGroup>
<ServerName>FABRIKAM\TEST1</ServerName>
<ConnectionString>
Data Source#FABRIKAM\TESTDB;InitialCatalog#ContactManager,...
</ConnectionString>
</PropertyGroup>
Maaaring tukuyin ang mga kundisyon sa pamamagitan ng mga elemento upang matukoy ang pamantayan para sa pagsusuri ng elemento. Tinukoy ito ng salitang Kondisyon habang tinutukoy ang property gaya ng ipinapakita sa ibaba:
<PropertyGroup>
<OutputRoot Condition#" '$(OutputRoot)'##'' ">..\Publish\Out\</OutputRoot>
...
</PropertyGroup>
Kapag pinoproseso ng MSBuild ang kahulugan ng property na ito, susuriin muna nito kung available ang isang $(OutputRoot) value ng property. Kung blangko ang value ng property—sa madaling salita, hindi nagbigay ng value ang user para sa property na ito—nagsusuri ang kundisyon sa true at nakatakda ang value ng property sa ..\Publish\Out.
Items and Item Groups
Tinutukoy ng isang file ng proyekto ang mga input sa proseso ng pagbuo na talagang iba’t ibang uri ng file. Sa MSBuild nomenclature, ang mga input na ito ay kinakatawan ng mga elemento ng Item at tinukoy sa loob ng isang ItemGroup element.Tulad ng Property element, maaari mong pangalanan ang isang Item element kahit anong gusto mo. Gayunpaman, dapat kang tumukoy ng Isama attribute para matukoy ang file o wildcard na kinakatawan ng item.
<ItemGroup>
<ProjectsToBuild Include#"$(SourceRoot)ContactManager-WCF.sln"/>
</ItemGroup>
Targets and Tasks
Ang isang Task element ay kumakatawan sa isang indibidwal na pagtuturo sa pagbuo (o gawain). Kasama sa MSBuild ang maraming paunang natukoy na mga gawain. Halimbawa:
- The Copy task copies files to a new location.
- The Csc task invokes the Visual C# compiler.
- The Vbc task invokes the Visual Basic compiler.
- The Exec task runs a specified program.
- The Message task writes a message to a logger.
Ang mga gawain ay dapat palaging nasa loob ng Target mga elemento. Ang Target element ay isang hanay ng isa o higit pang mga gawain na sunud-sunod na isinasagawa, at maaaring maglaman ng maraming target ang isang file ng proyekto.
<Project xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name#"LogMessage">
<Message Text#"Hello world!" />
</Target>
</Project>