Partager via


Comment : accéder aux propriétés de fichiers de types de projets spécifiques

Mise à jour : novembre 2007

Vous pouvez définir et examiner manuellement les propriétés de fichiers présents dans le projet dans l'environnement de développement intégré (IDE) de Visual Studio. Pour examiner des propriétés de fichier, ouvrez un projet dans Visual Studio, cliquez avec le bouton droit sur un fichier projet, tel que filename.cs, dans l'Explorateur de solutions. Dans le menu contextuel, sélectionnez Propriétés pour afficher la boîte de dialogue Propriétés. La boîte de dialogue Propriétés affiche les propriétés de fichier que vous pouvez alors définir manuellement pour le fichier choisi.

L'espace de noms VSLangProj80 offre un moyen d'accéder par programme à des propriétés de fichier dans des projets Visual C#, Visual J# ou Visual Basic. Plus spécifiquement, FileProperties2 définit un jeu de propriétés enrichi pour accéder à des informations relatives aux fichiers et contrôler ces dernières. Certaines propriétés définies dans FileProperties2 ne sont pas valides pour chaque type de fichier. Par exemple, la propriété DateCreated est définie pour les fichiers de code, mais non pour d'autres fichiers projet.

Pour accéder à une propriété FileProperties2 spécifique, vous devez passer le nom de cette propriété sous forme d'une chaîne à EnvDTE.Property.Properties.Item(object index), comme illustré dans l'exemple de code ci-dessous.

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

Ce code accède à la propriété FileName d'un fichier dans un projet Visual C#, Visual J# ou Visual Basic.

En effet, les propriétés définies dans FileProperties2 constituent une liste de références aux propriétés disponibles pour des fichiers accessibles en tant qu'éléments de propriété de projet pour des projets Visual C#, Visual J# ou Visual Basic.

Les étapes ci-dessous détaillent la manière d'accéder par programme à des propriétés de fichier dans un complément Visual Studio.

Remarque :

Selon vos paramètres actifs ou votre édition, les boîtes de dialogue et les commandes de menu que vous voyez peuvent différer de celles qui sont décrites dans l'aide. Ces procédures ont été développées avec les paramètres de développement généraux actifs. Pour modifier vos paramètres, choisissez Importation et exportation de paramètres dans le menu Outils. Pour plus d'informations, consultez Paramètres Visual Studio.

Pour accéder aux propriétés de fichiers pour un type spécifique de projet

  1. Créez un projet de complément Visual Studio en utilisant Visual C#.

  2. Dans le menu Projet, cliquez sur Ajouter une référence, puis sur l'onglet .NET. Ensuite, sélectionnez VSLangProj, VSLangProj2 et VSLangProj80, puis cliquez sur OK.

  3. Ajoutez les instructions Using suivantes au début du fichier Connect.cs :

    using VSLangProj;
    using VSLangProj2;
    using VSLangProj80;
    
  4. Ajoutez l'appel de méthode suivant à la méthode OnConnection.

    public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        VSProjectFileProps2(_applicationObject);
    }
    
  5. Ajoutez la méthode VSProjectFileProps2 immédiatement sous la méthode 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);
        }
    }
    

    La méthode VSProjectFileProps2 répertorie la propriété FileName pour chaque fichier dans le projet. La méthode détermine ensuite si le fichier présente une extension .cs ou .vb. Dans l'affirmative, les valeurs de propriété Filesize et valeurs de propriété DateCreated sont également affichées.

    La section Exemple fournit l'intégralité du code.

  6. Générez le complément en cliquant sur Générer la solution dans le menu Générer.

  7. Ouvrez un projet Visual C#, Visual J# ou Visual Basic dans l'IDE Visual Studio.

  8. Dans le menu Outils, cliquez sur Gestionnaire de compléments, puis sélectionnez votre complément dans la boîte de dialogue Gestionnaire de compléments. Cliquez sur OK pour exécuter votre complément.

Exemple

L'exemple suivant est un complément Visual Studio de base qui montre comment accéder aux propriétés d'un fichier dans un type de projet spécifique, à l'aide de l'automation 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

Compilation du code

Pour compiler ce code, créez un projet de complément Visual Studio et remplacez le code de la méthode OnConnection par celui de l'exemple. Pour plus d'informations sur l'exécution d'un complément, consultez Comment : contrôler des compléments avec le Gestionnaire de compléments.

Voir aussi

Concepts

Propriétés de projet

Autres ressources

Accès aux propriétés de projet, d'élément de projet et de configuration spécifiques au type de projet