Cómo: Obtener acceso a las propiedades de carpetas de tipos específicos de proyectos
Abra un proyecto en el entorno de desarrollo integrado (IDE) de Visual Studio y haga clic con el botón secundario del mouse en una carpeta del Explorador de soluciones para establecer y examinar manualmente las propiedades de carpeta. En el menú contextual, haga clic en Propiedades para mostrar el cuadro de diálogo Propiedades.
El espacio de nombres VSLangProj80 constituye una manera de tener acceso mediante programación a las propiedades de las carpetas en los proyectos de Visual C# o Visual Basic. Específicamente, FolderProperties2 define un amplio conjunto de propiedades para controlar y tener acceso a información de carpetas. No es posible tener acceso manualmente a muchas de las propiedades definidas en FolderProperties2 desde la ventana Propiedades.
Para tener acceso a una propiedad FolderProperties2 concreta, debe pasar el nombre de la propiedad específica como cadena a EnvDTE.Property.Properties.Item(object index), como se muestra en el ejemplo de código siguiente.
Project project;
ProjectItem folder;
Properties folderProps;
Property prop;
project = _applicationObject.Solution.Projects.Item(1);
folder = project.ProjectItems.AddFolder("MyFolder"
,Constants.vsProjectItemKindPhysicalFolder);
folderProps = folder.Properties;
prop = folderProps.Item("FullPath");
Este código tiene acceso a la propiedad FullPath de una carpeta en un proyecto de Visual C# o Visual Basic.
De hecho, las propiedades definidas en FolderProperties2 son una lista de referencia de las propiedades de carpeta disponibles, a las que se puede tener acceso como elementos de propiedad de proyectos de Visual C# o Visual Basic.
Los siguientes pasos explican cómo tener acceso mediante programación a estas propiedades en un complemento de Visual Studio.
Nota |
---|
Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones.La edición de Visual Studio que tenga y la configuración que esté usando determinan estos elementos.Para obtener más información, vea Personalizar la configuración de desarrollo en Visual Studio. |
Para tener acceso a las propiedades de las carpetas de un tipo específico de proyecto
Cree un proyecto de complemento de Visual Studio mediante Visual C#.
En el menú Proyecto, haga clic en Agregar referencia, luego en la ficha .NET, seleccione VSLangProj, VSLangProj2 y VSLangProj80, y haga clic en Aceptar.
Agregue las instrucciones siguientes al principio del archivo Connect.cs.
using VSLangProj; using VSLangProj2; using VSLangProj80;
Agregue la llamada siguiente al método OnConnection.
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; VSProjectFolderProps2(_applicationObject); }
Agregue el método VSProjectFolderProps2 inmediatamente después del método OnConnection.
public void VSProjectFolderProps2(DTE2 dte) { try { // Open a Visual C# or Visual Basic project // before running this add-in. Project project; ProjectItem folder; Properties folderProps; Property prop; project = _applicationObject.Solution.Projects.Item(1); // Add a new folder to the project. MessageBox.Show("Adding a new folder to the project."); folder = project.ProjectItems.AddFolder("MyFolder", Constants.vsProjectItemKindPhysicalFolder); folderProps = folder.Properties; prop = folderProps.Item("FullPath"); MessageBox.Show("The full path of the new folder is:" + "\n" + prop.Value.ToString()); prop = folderProps.Item("FileName"); MessageBox.Show("The file name of the new folder is:" + "\n" + prop.Value.ToString()); prop = folderProps.Item("URL"); MessageBox.Show("The new folder has the following URL:" + "\n" + prop.Value.ToString()); } catch(Exception ex) { MessageBox.Show(ex.Message); } }
La sección de ejemplo muestra el código completo.
Haga clic en la opción Generar solución del menú Generar para compilar el complemento.
Abra un proyecto de Visual C# o Visual Basic en el IDE de Visual Studio.
En el menú Herramientas, haga clic en Administrador de complementos y seleccione el complemento del cuadro de diálogo Administrador de complementos. Haga clic en Aceptar para ejecutar el complemento.
Las propiedades de carpetas para FullPath, FileName y URL se muestran en cuadros de mensaje.
Ejemplo
A continuación, se ofrece un ejemplo de complemento básico de Visual Studio donde se observa cómo tener acceso a las propiedades de una carpeta en un tipo de proyecto específico mediante el uso de la automatización de Visual Studio.
using System;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using System.Windows.Forms;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
public void OnConnection(object application,
ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
VSProjectFolderProps2(_applicationObject);
}
public void VSProjectFolderProps2(DTE2 dte)
{
try
{
// Open a Visual C# or Visual Basic project
// before running this add-in.
Project project;
ProjectItem folder;
Properties folderProps;
Property prop;
project = _applicationObject.Solution.Projects.Item(1);
// Add a new folder to the project.
MessageBox.Show("Adding a new folder to the project.");
folder =
project.ProjectItems.AddFolder("MyFolder"
,Constants.vsProjectItemKindPhysicalFolder);
folderProps = folder.Properties;
prop = folderProps.Item("FullPath");
MessageBox.Show("The full path of the new folder is:" + "\n"
+ prop.Value.ToString());
prop = folderProps.Item("FileName");
MessageBox.Show("The file name of the new folder is:" + "\n"
+ prop.Value.ToString());
prop = folderProps.Item("URL");
MessageBox.Show("The new folder has the following URL:"
+ "\n" + prop.Value.ToString());
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Imports System
Imports Microsoft.VisualStudio.CommandBars
Imports Extensibility
Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
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)
VSProjectConfigProperties(_applicationObject)
End Sub
Sub VSProjectConfigProperties(ByVal dte As DTE2)
' Open a Visual C# or Visual Basic project
' before running this add-in.
Try
Dim project As Project
Dim folder As ProjectItem
Dim folderProps As Properties
Dim prop As [Property]
project = _applicationObject.Solution.Projects.Item(1)
' Add a new folder to the project.
MsgBox("Adding a new folder to the project...")
folder = project.ProjectItems.AddFolder("MyFolder" _
, Constants.vsProjectItemKindPhysicalFolder)
folderProps = folder.Properties
prop = folderProps.Item("FullPath")
MsgBox("The full path of the new folder is:" & vbCr _
& prop.Value.ToString())
prop = folderProps.Item("FileName")
MsgBox("The file name of the new folder is:" & vbCr _
& prop.Value.ToString())
prop = folderProps.Item("URL")
MsgBox("The new folder has the following URL:" & vbCr _
& prop.Value.ToString())
Catch ex As System.Exception
MsgBox(ex.ToString)
End Try
End Sub
Compilar el código
Para compilar este código, cree un nuevo proyecto de complemento de Visual Studio y reemplace el código del método OnConnection por el código del ejemplo. Para obtener información sobre cómo ejecutar un complemento, vea Cómo: Controlar complementos con el Administrador de complementos.