Какво е CSProj файл?
Файловете с разширение CSPROJ представляват проектен файл на C#, който съдържа списъка с файлове, включени в проекта, заедно с препратките към системни модули. Когато се инициира нов проект в Microsoft VIiual Studio, получавате един .csproj файл заедно с основния файл на решението (.sln). Ако има повече от един модул в проект, ще има и равен брой файлове на проекта, където .sln файлът ги свързва всички заедно като част от проекта. Съдържанието на този файл дефинира всички изисквания, които са необходими за изграждане на проекта, като съдържание, което да се включи, изисквания на платформата, информация за версиите, уеб сървър или настройки на сървъра на база данни и задачите, които трябва да бъдат изпълнени. Съдържанието на файла на проекта е подредено в XML файлов формат и може да бъде отворено във всеки текстов редактор за редактиране, както и за преглед. Той също така дава логичен изглед на файловете на проекта за правилно подреждане.
CSPROJ файлов формат
Разработчиците могат сами да създават файлове на проекта, като спазват MSBuild XML Schema. Отворената и прозрачна структура на проектните файлове позволява на разработчиците на приложения да наложат сложен и прецизен контрол върху това как проектите се изграждат и внедряват. Съдържанието на такъв проектен файл има много ясна връзка помежду си. Следващата фигура показва ключови елементи и връзката между тях за такъв проектен файл.
Следващите раздели разработват елементите на файловия формат за файл на проект.
Проектен елемент
Елементът Project е основният елемент на всеки проектен файл. Той идентифицира XML схемата за файла на проекта и може да включва атрибути за указване на входните точки за процеса на изграждане.
<Project ToolsVersion#"4.0" DefaultTargets#"FullPublish"
xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
Свойства и условия
Свойствата представляват необходимата информация, необходима за изграждане на проект. Такива свойства са дефинирани в елемент PropertyGroup. Тези свойства се състоят от двойки ключ-стойност, където името на елемента на свойството дефинира ключа на свойството, а съдържанието на елемента дефинира стойността на свойството. Например, можете да дефинирате свойства с имена ServerName и ConnectionString, за да съхранявате име на статичен сървър и низ за връзка.
<PropertyGroup>
<ServerName>FABRIKAM\TEST1</ServerName>
<ConnectionString>
Data Source#FABRIKAM\TESTDB;InitialCatalog#ContactManager,...
</ConnectionString>
</PropertyGroup>
Условията могат да бъдат зададени чрез елементи, за да се уточнят критериите за оценка на елемента. Това се определя от думата Condition, докато се дефинира свойството, както е показано по-долу:
<PropertyGroup>
<OutputRoot Condition#" '$(OutputRoot)'##'' ">..\Publish\Out\</OutputRoot>
...
</PropertyGroup>
Когато MSBuild обработва тази дефиниция на свойство, той първо проверява дали е налична стойност на свойство $(OutputRoot). Ако стойността на свойството е празна – с други думи, потребителят не е предоставил стойност за това свойство – условието се оценява на true и стойността на свойството е зададена на ..\Publish\Out.
Елементи и групи артикули
Файлът на проекта дефинира входове към процеса на изграждане, които всъщност са различни типове файлове. В номенклатурата на MSBuild тези входове са представени от елементи на Item и са дефинирани в елемент ItemGroup. Точно като елементите Property, можете да наименувате елемент Item както желаете. Трябва обаче да посочите атрибут Include, за да идентифицирате файла или заместващия знак, който елементът представлява.
<ItemGroup>
<ProjectsToBuild Include#"$(SourceRoot)ContactManager-WCF.sln"/>
</ItemGroup>
Цели и задачи
Елемент Task представлява индивидуална инструкция за изграждане (или задача). MSBuild включва множество предварително дефинирани задачи. Например:
- Задачата Копиране копира файлове на ново място.
- Задачата Csc извиква компилатора на Visual C#.
- Задачата Vbc извиква компилатора на Visual Basic.
- Задачата Exec изпълнява определена програма.
- Задачата Съобщение пише съобщение до регистратор.
Задачите винаги трябва да се съдържат в Target елементи. Елементът Target е набор от една или повече задачи, които се изпълняват последователно, а файлът на проекта може да съдържа множество цели.
<Project xmlns#"http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name#"LogMessage">
<Message Text#"Hello world!" />
</Target>
</Project>