Como: Criar configurações de compilação do projeto e solução
The Visual Studio modelo de automação oferece objetos que permitem que você controle de solução e projeto compilação configurações. Uma configuração da compilação da solução especifica como determinados projetos em uma solução devem ser criados e, se habilitado, implantado.Configurações de compilação do projeto, que são listadas no Páginas de propriedades do projetocaixa de diálogo , lista todos sistema autônomo tipos disponível de projeto cria, sistema autônomo depurar ou versão e sistema autônomo plataformas disponível, sistema autônomo .NET ou do Win32.Para cada combinação de compilação e plataforma, há uma configuração de projeto — um conjunto de configurações e propriedades do projeto definido.
Os objetos de configuração da compilação da solução são:
Nome do objeto |
Descrição |
---|---|
SolutionBuild2 objeto |
Usado para compilação, limpar e implantar a configuração de solução ativo no momento. |
SolutionConfiguration2 objeto |
Representa uma lista de projetos e suas configurações que devem ser criadas. |
SolutionConfigurations coleção |
Contém tudo definido SolutionConfiguration objetos. |
SolutionContext objeto |
Representa a configuração do projeto em um SolutionConfiguration objeto. |
SolutionContexts coleção |
Contém todos os SolutionContext objetos em um SolutionConfiguration objeto. |
BuildDependency objeto |
Representa um projeto que devem ser compilados antes do projeto proprietário. |
BuildDependencies coleção |
Contém todos os projetos que devem ser compilados antes do projeto proprietário. |
Os objetos de configuração da compilação do projeto são:
Nome do objeto |
Descrição |
---|---|
ConfigurationManager objeto |
Representa compilação configuração e plataformas. |
Configuration objeto |
Representa uma configuração ou conjunto de configurações de compilação, dentro de uma plataforma específica. |
Configurations coleção |
Contém todos os Configuration objetos. |
OutputGroup objeto |
Contém os arquivos que são criados pelo projeto. |
OutputGroups coleção |
Contém todos os OutputGroup objetos. |
Usar esses objetos, você pode:
Criar, adicionar projetos para ativar e excluir configurações de solução.
Criar, executar ou implantar qualquer projeto em uma configuração de solução.
Obter informações sobre objetos em uma configuração de solução ou projeto.
Adicionar, remover ou obter informações sobre dependências de compilação do projeto.
Observação: |
---|
As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritas na Ajuda, dependendo das configurações ativas ou configurações de edição.Esses procedimentos foram desenvolvidos com o Geral Development Settings ativo.Para alterar as configurações, escolher Import and ExportSettings on the Tools menu.Para obter mais informações, consulte Configurações do Visual Studio. |
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 este código, crie um novo Visual Studio Projeto suplemento e substitua o código da classe conectar.cs ou conectar.vb com o código de exemplo. Antes de executar o suplemento, abra um projeto no Visual Studio IDE. Para obter informações sobre como executar um suplemento, consulte Como: Add-ins de controle com o Gerenciador de suplemento.
Consulte também
Tarefas
Como: Adicionar e manipular comandos
Demonstra Passo a passo: Criando um assistente
Conceitos
Introdução às Soluções, Projetos e Itens
Gráfico do modelo de objetos de automação
Outros recursos
Criando e controlando o ambiente Windows