Sdílet prostřednictvím


Jak: Vytvoření konfigurace sestavení projektu a řešení

Visual Studio Automatizace modelu nabízí objekty, které umožňují řídit řešení a konfigurací sestavení projektu.Konfigurace sestavení řešení určuje, jak jsou některé projekty v roztoku se být postaveny a pokud je povolena, nasazeny.Konfigurace sestavení, které jsou uvedeny v projektu Stránky vlastností projektu dialogové okno, všechny dostupné typy projektu navazuje, jako například ladění nebo uvolnění a k dispozici platformy jako seznam.NET nebo Win32.Pro každou kombinaci sestavení a platforma je konfigurace projektu – sada vlastností projektu a nastavení.

Objekty konfigurace sestavení řešení jsou:

Název objektu

Description

SolutionBuild2objekt

Pro sestavení, čištění a konfiguraci aktuálně aktivní řešení nasazení.

SolutionConfiguration2objekt

Představuje seznam projektů a jejich konfigurací, které mají být vytvořeny.

SolutionConfigurationskolekce

Obsahuje všechny definované SolutionConfiguration objektů.

SolutionContextobjekt

Představuje konfiguraci projektu v SolutionConfiguration objektu.

SolutionContextskolekce

Obsahuje všechny SolutionContext objekty v SolutionConfiguration objektu.

BuildDependencyobjekt

Představuje projekt, který musí být postavena před vlastnící projektu je možné sestavit.

BuildDependencieskolekce

Obsahuje všechny projekty, které musí být vytvořeny před vlastnící projektu je možné sestavit.

Objekty konfigurace sestavení projektu jsou:

Název objektu

Description

ConfigurationManagerobjekt

Představuje konfiguraci sestavení a platformy.

Configurationobjekt

Představuje konfiguraci nebo sadu nastavení sestavení, v rámci zadaného platformy.

Configurationskolekce

Obsahuje všechny Configuration objektů.

OutputGroupobjekt

Obsahuje soubory, které jsou vytvořeny v rámci projektu.

OutputGroupskolekce

Obsahuje všechny OutputGroup objektů.

Používání těchto objektů můžete:

  • Vytvořte a přidejte projekty k aktivaci odstranit konfigurace řešení.

  • Sestavení, spustit nebo jakýkoli projekt v konfiguraci řešení nasazení.

  • Získáte informace o objektech v rámci projektu nebo řešení konfigurace.

  • Přidat, odebrat nebo získat informace o závislosti sestavení projektu.

[!POZNÁMKA]

Dialogová okna a příkazy v nabídkách menu, které vidíte, se mohou lišit od těch popsaných v nápovědě, v závislosti na vašich aktivních nastaveních nebo edici.Tyto postupy byly vyvinuty s aktivní Obecné nastavení pro vývoj.Chcete-li změnit nastavení, zvolte Import a ExportNastavení na Nástroje nabídce.Další informace naleznete v tématu Nastavení aplikace Visual Studio.

Příklad

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);
    }
}

Probíhá kompilace kódu

Tento kód kompilace, vytvořit nový Visual Studio přidat projektu a nahradit kód třídy Connect.cs nebo Connect.vb s kódem v příkladu.Před spuštěním-in, otevřete projekt v Visual Studio IDE.Informace o spuštění v Postup: ovládání doplňky pomocí Správce doplňků.

Viz také

Úkoly

Jak: Přidat a zpracování příkazů

Jak: Vytvoření doplňku

Názorný postup: Vytvoření Průvodce

Koncepty

Řešení a základy projektu

Automatizační objekt modelu grafu

Další zdroje

Sestavování aplikací v sadě Visual Studio

Vytváření a řízení prostředí Windows

Vytváření doplňků a průvodců

Automatizace a Reference rozšiřitelnosti