How to: Criar a solução e configurações de compilação do projeto

O Visual Studio o modelo de automação oferece a objetos que permitem que você controle a solução e projeto de compilação configurações. Uma configuração de compilação da solução especifica como determinados projetos em uma solução devem ser criados e, se habilitada, implantado. Projeto de configurações de compilação, que são listadas na Páginas de propriedades do projeto caixa de diálogo, a lista de todos os tipos disponíveis de projeto cria, como Debug ou Release e as plataformas disponíveis, como.NET ou do Win32. Para cada combinação de compilação e a plataforma, há uma configuração de projeto — um conjunto de configurações e propriedades do projeto definido.

Os objetos de configuração de compilação da solução são:

Nome do objeto

Descrição

SolutionBuild2objeto

Usado para construir, limpar e implantar a configuração da solução ativa no momento.

SolutionConfiguration2objeto

Representa uma lista de projetos e suas configurações que estão a ser criado.

SolutionConfigurationscoleção

Contém todos os definidos SolutionConfiguration objetos.

SolutionContextobjeto

Representa uma configuração de projeto em um SolutionConfiguration objeto.

SolutionContextscoleção

Contém todos os SolutionContext objetos em um SolutionConfiguration objeto.

BuildDependencyobjeto

Representa um projeto que deve ser compilado antes do projeto proprietário pode ser criado.

BuildDependenciescoleção

Contém todos os projetos que devem ser compilados antes do projeto proprietário pode ser criado.

Os objetos de configuração de compilação do projeto são:

Nome do objeto

Descrição

ConfigurationManagerobjeto

Representa criar a configuração e plataformas.

Configurationobjeto

Representa uma configuração ou um conjunto de configurações de compilação, dentro de uma plataforma específica.

Configurationscoleção

Contém todos os Configuration objetos.

OutputGroupobjeto

Contém os arquivos que são compilados pelo projeto.

OutputGroupscoleção

Contém todos os OutputGroup objetos.

Usando esses objetos, você pode:

  • Criar, adicionar projetos para ativar e excluir configurações de solução.

  • Construir, executar ou implantar qualquer projeto em uma configuração de solução.

  • Obter informações sobre objetos dentro de uma configuração de projeto ou solução.

  • Adicionar, remover ou obter informações sobre dependências de compilação do projeto.

ObservaçãoObservação

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritos na Ajuda, dependendo das configurações ativas ou configurações de edição. Esses procedimentos foram desenvolvidos com o General Development Settings ativo. Para alterar as configurações, escolha importação e Exportar configurações sobre o Ferramentas menu. Para obter mais informações, consulte Trabalhando com configurações.

Exemplo

Public Sub OnConnection(ByVal application As Object, ByVal _
connectMode As ext_ConnectMode, ByVal addInInst As Object, _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
    _applicationObject = CType(application, DTE2)
    _addInInstance = CType(addInInst, AddIn)
    SConfig(_applicationObject)
End Sub
Sub SConfig(ByVal dte As DTE2)
    Dim SB As SolutionBuild2 =  _
    CType(_applicationObject.Solution.SolutionBuild, _
    SolutionBuild2)
    Dim SolCtx As SolutionContext
    Dim Proj As Project
    Dim CM As ConfigurationManager
    Dim Cfgs As SolutionConfigurations
    Dim Cfg As SolutionConfiguration2
    Dim msg As String

    ' Get a reference to the solution configurations 
    ' solution context of the first project.
    SolCtx = SB.SolutionConfigurations.Item(1).SolutionContexts.Item(1)
   CM = _applicationObject.Solution.Projects. _
    Item(1).ConfigurationManager
    Proj = _applicationObject.Solution.Projects.Item(1)
    Cfgs = _applicationObject.Solution.SolutionBuild. _
    SolutionConfigurations
    Cfg = CType(Cfgs.Item(1), SolutionConfiguration2)

    ' List the current solution build info.
    msg = "BuildState = "
    Select Case SB.BuildState
        Case vsBuildState.vsBuildStateNotStarted
            msg = msg & "Build has not yet started." & vbCr
        Case vsBuildState.vsBuildStateInProgress
            msg = msg & "Build is in progress." & vbCr
        Case vsBuildState.vsBuildStateDone
            msg = msg & "Build has completed." & vbCr
    End Select
    msg = msg & "Configuration Name = " & SolCtx.ConfigurationName _
    & vbCr
    msg = msg & "Platform Name = " & SolCtx.PlatformName & vbCr
    msg = msg & "Project Name = " & SolCtx.ProjectName & vbCr
    MsgBox(msg)

    ' List the current solution configurations.
    msg = ("Configuration names are:" & vbCr)
    For Each Cfg In Cfgs
        msg = msg & Cfg.Name & vbCr
    Next
    MsgBox(msg)
   ' Add a new solution configuration.
   Cfgs.Add("ANewConfiguration", "Debug", False)
   MsgBox(Cfgs.Item(1).Name)
   ' Create a new project build configuration based on the Debug 
   ' configuration.
   Proj.ConfigurationManager.AddConfigurationRow("MyNewConfig", _
    "Debug", True)
   ' Build the solution configuration.
   sb.SolutionConfigurations.Item("MyConfig").Activate()
   sb.Build()
End Sub
public void OnConnection(object application, 
ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    SConfig(_applicationObject);
}
public void SConfig(DTE2 dte)
{
    try
    {
        SolutionBuild2 SB =
 (SolutionBuild2)_applicationObject.Solution.SolutionBuild;
        SolutionContext SolCtx;
        Project Proj;
        ConfigurationManager CM;
        SolutionConfigurations Cfgs;
        SolutionConfiguration2 Cfg;
        String msg;
        // Get a reference to the solution configurations
        // solution context of the first project.
        SolCtx = SB.SolutionConfigurations.Item(1).
SolutionContexts.Item(1);
        CM = dte.Solution.Projects.Item(1).ConfigurationManager;
        Proj = _applicationObject.Solution.Projects.Item(1);
        Cfgs = _applicationObject.Solution.
SolutionBuild.SolutionConfigurations;
        Cfg = (SolutionConfiguration2)Cfgs.Item(1);
        // List the current solution build info.
        msg = "BuildState = ";
        switch (SB.BuildState)
        {
            case vsBuildState.vsBuildStateNotStarted:
                msg = (msg + "Build has not yet started." + "\n");
            break;
            case vsBuildState.vsBuildStateInProgress:
                msg = (msg + "Build is in progress." + "\n");
            break;
            case vsBuildState.vsBuildStateDone:
                msg = (msg + "Build has completed." + "\n");
            break;
        }
        msg = msg + "Configuration Name = " + 
SolCtx.ConfigurationName + "\n";
        msg = msg + "Platform Name = " + SolCtx.PlatformName + "\n";
        msg = msg + "Project Name = " + SolCtx.ProjectName + "\n";
        MessageBox.Show(msg);
        // List the current solution configurations.
        msg = "Configuration names are:" + "\n";
        foreach(SolutionConfiguration2 tempConfigs in Cfgs)
        {
            msg = msg + tempConfigs.Name + "\n";
        }
        MessageBox.Show(msg);
        // Add a new solution configuration.
        Cfgs.Add("ANewConfiguration", "Debug", false);
        MessageBox.Show
("The name of the first solution configuration item is: " 
+ Cfgs.Item(1).Name);
        // Create a new project build configuration based on the 
        // Debug configuration.
        Proj.ConfigurationManager.AddConfigurationRow
("MyNewConfig", "Debug", true);
        // Build the debug solution configuration.
        MessageBox.Show("Build the solution in the debug mode...");
        SB.SolutionConfigurations.Item("Debug").Activate();
        SB.Build(true);
    }
    catch (Exception ex)
    {
        MessageBox.Show("Exception: " + ex);
    }
}

Compilando o código

Para compilar esse código, crie um novo Visual Studio Add-in do projeto e substitua o código da classe Connect. cs ou Connect. vb com o código de exemplo. Antes de executar o suplemento, abra um projeto de Visual Studio IDE. Para obter informações sobre como executar um suplemento, consulte How to: Adicionar-Ins usando o Adicionar-no Gerenciador de controle.

Consulte também

Tarefas

How to: Adicionar e comandos da alça

How to: Criar um Adicionar-

Walkthrough: Criando um assistente

Conceitos

Introdução às Soluções, Projetos e Itens

Automation Object Model Chart

Outros recursos

Criando no Visual Studio

Criar e controlar o ambiente Windows

Criação de assistentes e ins Adicionar-

Automation and Extensibility Reference