Использование MSBuild
MSBuild предоставляет хорошо определенный расширяемый формат XML для создания файлов проекта, которые полностью описывают элементы проекта для создания, задач сборки и конфигураций сборки.
Общие рекомендации ПО MSBuild
Файлы проекта MSBuild, например Visual C# .csproj и Visual Basic Vbproj, содержат данные, используемые во время сборки, но также могут содержать данные, используемые во время разработки. Данные во время сборки хранятся с помощью примитивов MSBuild, включая элемент Item (MSBuild) и элемент property (MSBuild). Данные во время разработки, относящиеся к типу проекта и любым связанным подтипам проекта, хранятся в xml-файле свободной формы, зарезервированном для него.
MSBuild не поддерживает собственные объекты конфигурации, но предоставляет условные атрибуты для указания данных, относящихся к конфигурации. Например:
<OutputDir Condition="'$(Configuration)'=="release'">Bin\MyReleaseConfig</OutputDir>
Дополнительные сведения об условных атрибутах см. в разделе "Условные конструкции".
Расширение MSBuild для типа проекта
Интерфейсы и API MSBuild могут изменяться в будущих версиях Visual Studio. Поэтому рекомендуется использовать классы управляемой платформы пакетов (MPF), так как они обеспечивают защиту от изменений.
Платформа управляемых пакетов для проектов (MPFProj) предоставляет вспомогательные классы для создания и управления новой системой проектов. Инструкции по исходному коду и компиляции можно найти в MPF для проектов — Visual Studio 2013.
Классы MPF для конкретного проекта приведены следующим образом:
Класс | Внедрение |
---|---|
Microsoft.VisualStudio.Package.ProjectNode |
IVsProject3 IVsCfgProvider2 IPersistFileFormat IVsSolutionEvents |
Microsoft.VisualStudio.Package.ProjectFactory |
IVsProjectFactory |
Microsoft.VisualStudio.Package.HierarchyNode |
IVsHierarchy |
Microsoft.VisualStudio.Package.ProjectConfig |
IVsCfg IVsProjectCfg IVsBuildableProjectCfg IVsDebuggableProjectCfg |
Microsoft.VisualStudio.Package.SettingsPage |
IPropertyPageSite |
Microsoft.VisualStudio.Package.ProjectElement
класс — это оболочка для элементов MSBuild.
Генераторы отдельных файлов и задачи MSBuild
Генераторы отдельных файлов доступны только во время разработки, но задачи MSBuild можно использовать во время разработки и во время сборки. Для максимальной гибкости используйте задачи MSBuild для преобразования и создания кода. Дополнительные сведения см. в разделе "Пользовательские инструменты".