Partilhar via


Usando o MSBuild

O MSBuild fornece um formato XML bem definido e extensível para criar arquivos de projeto que descrevem completamente os itens de projeto a serem criados, tarefas de compilação e configurações de compilação.

Considerações gerais sobre o MSBuild

Arquivos de projeto MSBuild, por exemplo, Visual C# .csproj e Visual Basic .vbproj, contêm dados que são usados em tempo de compilação, mas também podem conter dados que são usados em tempo de design. Os dados de tempo de compilação são armazenados usando os primitivos do MSBuild, incluindo o Elemento de Item (MSBuild) e o Elemento de Propriedade (MSBuild). Os dados de tempo de design, que são específicos para o tipo de projeto e quaisquer subtipos de projeto relacionados, são armazenados num XML de formato livre dedicado a essa finalidade.

MSBuild não tem suporte nativo para objetos de configuração, mas fornece atributos condicionais para especificar dados específicos da configuração. Por exemplo:

<OutputDir Condition="'$(Configuration)'=="release'">Bin\MyReleaseConfig</OutputDir>

Para obter mais informações sobre atributos condicionais, consulte Construções condicionais.

Estendendo o MSBuild para seu tipo de projeto

As interfaces e APIs do MSBuild estão sujeitas a alterações em versões futuras do Visual Studio. Portanto, é prudente usar as classes MPF (managed package framework) porque elas fornecem proteção contra alterações.

O Managed Package Framework for Projects (MPFProj) fornece classes auxiliares para criar e gerenciar um novo sistema de projeto. Você pode encontrar o código-fonte e as instruções de compilação em MPF for Projects - Visual Studio 2013.

As classes MPF específicas do projeto são as seguintes:

Class Implementation
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 class é um encapsulamento para itens do MSBuild.

Geradores de arquivo único vs. tarefas do MSBuild

Os geradores de arquivo único são acessíveis somente em tempo de design, mas as tarefas do MSBuild podem ser usadas em tempo de design e de compilação. Para máxima flexibilidade, portanto, use tarefas do MSBuild para transformar e gerar código. Para obter mais informações, consulte Ferramentas personalizadas.