Cómo: Crear configuraciones de compilación de soluciones y proyectos
El modelo de automatización de Visual Studio proporciona objetos que permiten controlar las configuraciones de compilación de soluciones y proyectos.En una configuración de compilación de soluciones se especifica el modo en que se van a compilar y, si se habilita, implementar determinados proyectos de una solución.Las configuraciones de compilación de proyectos, que aparecen en el cuadro de diálogo Páginas de propiedades del proyecto, indican todos los tipos de compilaciones de proyecto disponibles, como Debug o Release, y las plataformas disponibles, como .Net o Win32.Por cada combinación de compilación y plataforma, existe una configuración de proyecto; es decir, un conjunto de valores y propiedades de proyecto definidos.
Los objetos de configuración de compilación de soluciones son:
Nombre de objeto |
Descripción |
---|---|
Objeto SolutionBuild2 |
Se utiliza para compilar, limpiar e implementar la configuración de solución activa. |
Objeto SolutionConfiguration2 |
Representa una lista de proyectos que se deben compilar y sus configuraciones. |
Colección SolutionConfigurations |
Contiene todos los objetos SolutionConfiguration definidos. |
Objeto SolutionContext |
Representa la configuración de un proyecto en un objeto SolutionConfiguration. |
Colección SolutionContexts |
Contiene todos los objetos SolutionContext en un objeto SolutionConfiguration. |
Objeto BuildDependency |
Representa un proyecto que debe compilarse antes de poder compilar el proyecto propietario. |
Colección BuildDependencies |
Contiene todos los proyectos que se deben compilar antes de poder compilar el proyecto propietario. |
Los objetos de configuración de compilación de proyectos son:
Nombre de objeto |
Descripción |
---|---|
Objeto ConfigurationManager |
Representa la configuración de compilación y las plataformas. |
Objeto Configuration |
Representa una configuración, o conjunto de configuraciones de compilación, para una plataforma específica. |
Colección Configurations |
Contiene todos los objetos Configuration. |
Objeto OutputGroup |
Contiene los archivos compilados por el proyecto. |
Colección OutputGroups |
Contiene todos los objetos OutputGroup. |
Mediante estos objetos se puede:
Crear, agregar proyectos, activar y eliminar configuraciones de solución.
Compilar, ejecutar e implementar cualquier proyecto de una configuración de solución.
Obtener información acerca de los objetos de un proyecto o una configuración de solución.
Agregar, quitar u obtener información acerca de las dependencias de compilación de proyectos.
[!NOTA]
Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos.Estos procedimientos se han desarrollado con la Configuración de desarrollo general activa.Para cambiar la configuración, elija la opción Importar y exportarconfiguraciones del menú Herramientas.Para obtener más información, vea Valores de configuración de Visual Studio.
Ejemplo
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);
}
}
Compilar el código
Para compilar este código, cree un nuevo proyecto de complemento de Visual Studio y reemplace el código de la clase Connect.cs o Connect.vb por el código del ejemplo.Antes de ejecutar el complemento, abra un proyecto en el IDE de Visual StudioPara obtener información sobre cómo ejecutar un complemento, vea Cómo: Controlar complementos con el Administrador de complementos.
Vea también
Tareas
Cómo: Agregar y controlar comandos
Conceptos
Conceptos básicos de soluciones y proyectos
Gráfico del modelo de objetos de automatización
Otros recursos
Compilar aplicaciones en Visual Studio
Crear y controlar las ventanas del entorno