.CSProj вариант №
Файлы с расширением CSPROJ представляют собой файл проекта C#, который содержит список файлов, включенных в проект, а также ссылки на системные сборки. Когда новый проект инициируется в Microsoft VIiual Studio, вы получаете один файл .csproj вместе с основным файлом решения (.sln). Если в проекте более одной сборки, будет равное количество файлов проекта, а файл .sln связывает их все вместе как часть проекта. Содержимое этого файла определяет все требования, необходимые для построения проекта, такие как включаемый контент, требования к платформе, информация о версиях, настройки веб-сервера или сервера базы данных, а также задачи, которые необходимо выполнить. Содержимое файла проекта представлено в формате файла XML и может быть открыто в любом текстовом редакторе как для редактирования, так и для просмотра. Это также дает логическое представление файлам проекта для правильного расположения.
Формат файла CSPROJ
Разработчики также могут создавать файлы проектов самостоятельно, соблюдая схему XML MSBuild. Открытая и прозрачная структура файлов проектов позволяет разработчикам приложений осуществлять сложный и детальный контроль над созданием и развертыванием проектов. Содержимое такого файла проекта имеет очень четкую взаимосвязь между собой. На следующем рисунке показаны ключевые элементы и отношения между ними для такого файла проекта.
В следующих разделах подробно описаны элементы формата файла для файла проекта.
Элемент проекта
Элемент 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>
Условия могут быть указаны через элементы, чтобы указать критерии для оценки элемента. Это указывается словом условия при определении свойства, как показано ниже:
<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>