Usando o MSBuild
O MSBuild fornece um formato XML extensível e bem definido 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 do MSBuild, por exemplo, arquivos .csproj do Visual C# e .vbproj do Visual Basic, 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 primitivas do MSBuild, incluindo Elemento de Item (MSBuild) e Elemento de Propriedade (MSBuild). Os dados de tempo de design, que são dados específicos para o tipo de projeto e quaisquer subtipos de projeto relacionados, são armazenados em XML de forma livre reservado para eles.
O 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
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:
Classe | Implementação |
---|---|
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 wrapper para itens do MSBuild.
Geradores de arquivo único versus tarefas do MSBuild
Os geradores de arquivos únicos são acessíveis somente em tempo de design, mas as tarefas do MSBuild podem ser usadas em tempo de design e tempo de compilação. Para obter flexibilidade máxima, portanto, use tarefas do MSBuild para transformar e gerar código. Para obter mais informações, consulte Ferramentas personalizadas.