Compartilhar via


Como acessar propriedades de arquivos para tipos de projetos específicos

Você pode definir e examinar manualmente as propriedades de arquivos no projeto no Visual Studio ambiente de desenvolvimento integrado (IDE). Para examinar propriedades de arquivo, abra um projeto em Visual Studio, clique com o botão direito do mouse em um arquivo de projeto, como filename.cs, em Gerenciador de Soluções. No menu de atalho, selecione Propriedades para exibir a caixa de diálogo Propriedades. A caixa de diálogo Propriedades exibe as propriedades de arquivo que você pode definir manualmente para o arquivo escolhido.

O namespace VSLangProj80 oferece uma maneira de acessar propriedades do arquivo por meio de programação em projetos do Visual C# ou do Visual Basic. Especificamente, FileProperties2 define um conjunto avançado de propriedades para controlar e acessar informações de arquivos. Algumas propriedades definidas em FileProperties2 não são válidas para cada tipo de arquivo. Por exemplo, a propriedade DateCreated é definida para arquivos de código mas não para outros arquivos de projeto.

Para acessar uma propriedade específica FileProperties2, você deve passar o nome da propriedade específica como uma cadeia de caracteres a EnvDTE.Property.Properties.Item(object index), conforme mostrado no exemplo de código abaixo.

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

Esse código acessa a propriedade FileName de um arquivo em um projeto do Visual C# ou do Visual Basic.

Com efeito, as propriedades de configuração definidas em FileProperties2 são uma lista de referência de propriedades disponíveis de arquivos que podem ser acessados como itens de propriedade de projeto para Visual C# ou Visual Basic.

As etapas abaixo detalham como programaticamente acessar as propriedades de arquivo em um suplemento Visual Studio.

Dica

Seu computador pode mostrar diferentes nomes ou localizações para alguns dos elementos de interface do usuário Visual Studio nas instruções a seguir.A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos.Para obter mais informações, consulte Personalizando configurações de desenvolvimento no Visual Studio.

Para acessar propriedades de arquivos para um tipo específico de projeto

  1. Crie um projeto de suplemento do Visual Studio usando o Visual C#.

  2. No menu Projeto, clique em Adicionar Referência, clique na guia .NET, selecione VSLangProj, VSLangProj2 e VSLangProj80 e clique em OK.

  3. Adicione as seguintes instruções de uso na parte superior do arquivo Connect.cs.

    using VSLangProj;
    using VSLangProj2;
    using VSLangProj80;
    
  4. Adicione a seguinte chamada de método ao método OnConnection.

    public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        VSProjectFileProps2(_applicationObject);
    }
    
  5. Adicione o método VSProjectFileProps2 diretamente abaixo do método OnConnection.

    public void VSProjectFileProps2(DTE2 dte)
    {
        try
        {
            // Open a Visual C# 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);
        }
    }
    

    O VSProjectFileProps2 lista a propriedade FileName para cada arquivo no projeto. Em seguida, o método determina se o arquivo tem a extensão .cs ou .vb. Nesse caso, os valores de propriedade Filesize e DateCreated também serão exibidos.

    A seção de exemplo lista o código completo

  6. Compile o suplemento clicando em Compilar Solução no menu Compilação.

  7. Abra um projeto do Visual C# ou do Visual Basic na IDE do Visual Studio.

  8. No menu de Ferramentas , clique Gerenciador de Suplementos, e selecione o suplemento da caixa de diálogo Gerenciador de Suplementos . Clique OK para executar o suplemento.

Exemplo

O exemplo a seguir é um suplemento básico do Visual Studio que demonstra como acessar propriedades de um arquivo em um tipo específico de projeto usando a automação do 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# 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# 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

Compilando o código

Para compilar este código, crie um novo projeto do suplemento Visual Studio e substitua o código do método OnConnection com o código no exemplo. Para obter informações sobre como executar um suplemento, consulte Como controlar suplementos usando o Gerenciador de Suplementos.

Consulte também

Outros recursos

Project Properties

Acessando propriedades de projetos, itens de projetos e configuração para tipos de projetos específicos