Cómo: Obtener acceso a las propiedades de archivos de tipos específicos de proyectos
Actualización: noviembre 2007
Puede establecer y examinar manualmente propiedades de archivo para archivos del proyecto del entorno de desarrollo integrado (IDE) de Visual Studio. Para examinar las propiedades de archivo, abra un proyecto en Visual Studio, haga clic con el botón secundario del mouse (ratón) en un archivo de proyecto, por ejemplo, nombrearchivo.cs, en el Explorador de soluciones. En el menú de acceso directo, seleccione Propiedades para mostrar el cuadro de diálogo Propiedades. El cuadro de diálogo Propiedades muestra las propiedades de archivo que puede establecer manualmente del archivo que eligió.
El espacio de nombres VSLangProj80 proporciona una manera de tener acceso mediante programación a las propiedades de archivo de proyectos de Visual C#, Visual J# o Visual Basic. Específicamente, FileProperties2 define un amplio conjunto de propiedades para controlar y tener acceso a información de archivo. Algunas propiedades definidas en FileProperties2 no son válidas para todos los tipos de archivo. Por ejemplo, la propiedad DateCreated se define para los archivos de código, pero no para otros archivos de proyecto.
Para tener acceso a una propiedad FileProperties2 específica, es necesario pasar el nombre de la propiedad específica como cadena a EnvDTE.Property.Properties.Item(object index), tal como se muestra en el ejemplo de código siguiente.
Project project;
ProjectItems projItems;
ProjectItem projItem;
Property prop;
project = _applicationObject.Solution.Projects.Item(1);
projItems = project.ProjectItems;
projItem = projItems.Item(1);
prop = projItem.Properties.Item("FileName");
Este código tiene acceso a la propiedad FileName de un archivo dentro de un proyecto de Visual C#, Visual J# o Visual Basic.
De hecho, las propiedades definidas en FileProperties2 son una lista de referencia de las propiedades de archivos disponibles, a las que se puede tener acceso como elementos de propiedad de proyecto para los proyectos de Visual C#, Visual J# o Visual Basic.
Los siguientes pasos explican cómo tener acceso mediante programación a las propiedades de archivo en un complemento de Visual Studio.
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 desarrollaron con la Configuración general de desarrollo activa. Para cambiar la configuración, elija la opción Importar y exportar configuraciones del menú Herramientas. Para obtener más información, vea Valores de configuración de Visual Studio. |
Para tener acceso a las propiedades de los archivos 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 siguientes instrucciones using 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; VSProjectFileProps2(_applicationObject); }
Agregue el método VSProjectFileProps2 inmediatamente después del método OnConnection.
public void VSProjectFileProps2(DTE2 dte) { try { // Open a Visual C#, Visual J#, or Visual Basic project // before running this add-in. Project project; ProjectItems projItems; ProjectItem projItem; Property prop; project = _applicationObject.Solution.Projects.Item(1); projItems = project.ProjectItems; for(int i = 1 ; i <= projItems.Count; i++ ) { projItem = projItems.Item(i); prop = projItem.Properties.Item("FileName"); MessageBox.Show("The file name of item " + i + " is: " + prop.Value.ToString()); if (prop.Value.ToString().Contains(".cs") || prop.Value.ToString().Contains(".vb")) { prop = projItem.Properties.Item("FileSize"); MessageBox.Show("The file size of item " + i + " is: " + prop.Value.ToString()); prop = projItem.Properties.Item("DateCreated"); MessageBox.Show("The creation date of item " + i + " is: " + prop.Value.ToString()); } } } catch(Exception ex) { MessageBox.Show(ex.Message); } }
VSProjectFileProps2 muestra la propiedad FileName de cada archivo del proyecto. El método determina, a continuación, si el archivo tiene una extensión .cs o .vb. De ser así, también se muestran los valores de propiedad Filesize y DateCreated.
La sección de ejemplo muestra el código completo.
Haga clic en la opción Generar solución del menú Generar para generar el complemento.
Abra un proyecto de Visual C#, Visual J# 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.
Ejemplo
En el siguiente ejemplo de complemento básico de Visual Studio se muestra cómo tener acceso a las propiedades de un tipo de proyecto específico, utilizando 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;
VSProjectFileProps2(_applicationObject);
}
public void VSProjectFileProps2(DTE2 dte)
{
try
{
// Open a Visual C#, Visual J#, or Visual Basic project
// before running this add-in.
Project project;
ProjectItems projItems;
ProjectItem projItem;
Property prop;
project = _applicationObject.Solution.Projects.Item(1);
projItems = project.ProjectItems;
for(int i = 1 ; i <= projItems.Count; i++ )
{
projItem = projItems.Item(i);
prop = projItem.Properties.Item("FileName");
MessageBox.Show("The file name of item " + i + " is: "
+ prop.Value.ToString());
if (prop.Value.ToString().Contains(".cs")
|| prop.Value.ToString().Contains(".vb"))
{
prop = projItem.Properties.Item("FileSize");
MessageBox.Show("The file size of item " + i + " is: "
+ prop.Value.ToString());
prop = projItem.Properties.Item("DateCreated");
MessageBox.Show("The creation date of item " + i
+ " is: " + 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)
VSProjectFileProperties2(_applicationObject)
End Sub
Sub VSProjectFileProperties2(ByVal dte As DTE2)
' Open a Visual C#, Visual J#, or Visual Basic project
' before running this add-in.
Try
Dim project As Project
Dim projItems As ProjectItems
Dim projItem As ProjectItem
Dim prop As [Property]
project = _applicationObject.Solution.Projects.Item(1)
projItems = project.ProjectItems
For i As Integer = 1 To projItems.Count
projItem = projItems.Item(i)
prop = projItem.Properties.Item("FileName")
MsgBox("The file name of item " & i & " is: " _
& prop.Value.ToString())
If (prop.Value.ToString().Contains(".cs") _
Or prop.Value.ToString().Contains(".vb")) Then
prop = projItem.Properties.Item("FileSize")
MsgBox("The file size of item " & i & " is: " _
& prop.Value.ToString())
prop = projItem.Properties.Item("DateCreated")
MsgBox("The creation date of item " & i & " is: " _
& prop.Value.ToString())
End If
Next i
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.