Поделиться через


Практическое руководство. Доступ к файлам определенных типов проектов

Свойства файла можно установить вручную и проверить в проекте в интегрированной среде разработки Visual Studio. Чтобы проверить свойства файлов, откройте проект в Visual Studio и правой кнопкой мыши щелкните файл проекта, такой как filename.cs, в обозревателе решений. Чтобы открыть диалоговое окно Свойства, в контекстном меню выберите Свойства. В диалоговом окне Свойства отображаются свойства файлов, которые можно задать для выбранного файла вручную.

Пространство имен VSLangProj80 предлагает способ программного доступа к свойствам файлов в проектах Visual C# или Visual Basic. В частности, FileProperties2 определяет большой набор свойств для управления и сведениями о файле и доступа к ним. Некоторые свойства, определенные в FileProperties2, недопустимы для каждого типа файла. Например, свойство DateCreated определено для файлов кода, но не для других файлов проекта.

Чтобы получить доступ к определенному свойству FileProperties2, необходимо указать точное имя свойства в виде строки в EnvDTE.Property.Properties.Item(object index), как показано в следующем примере кода.

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

Этот код обращается к свойству FileName файла в проекте Visual C# или Visual Basic.

Фактически, свойства, определенные в FileProperties2, представляют собой список ссылок доступных свойств файлов, к которым можно получить доступ как к элементам свойств проектов Visual C# или Visual Basic.

В следующих шагах подробно описан порядок программного доступа к свойствам файлов в надстройке Visual Studio.

Примечание

Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих настроек или выпуска.Эти процедуры были разработаны с обычными параметрами разработки.Чтобы изменить параметры, выберите в меню Сервис пункт Импорт и экспорт параметров.Дополнительные сведения см. в разделе Работа с параметрами.

Доступ к свойствам файлов для определенного типа проекта

  1. Создайте проект надстройки Visual Studio, используя Visual C#.

  2. В меню Проект щелкните Добавить ссылку, перейдите на вкладку .NET выберите VSLangProj, VSLangProj2 и VSLangProj80, и нажмите кнопку ОК.

  3. Добавьте в начало файла Connect.cs следующие операторы using.

    using VSLangProj;
    using VSLangProj2;
    using VSLangProj80;
    
  4. Добавьте в метод OnConnection следующий вызов метода.

    public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        VSProjectFileProps2(_applicationObject);
    }
    
  5. Добавьте метод VSProjectFileProps2 сразу после метода 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);
        }
    }
    

    VSProjectFileProps2 выводит свойство FileName для каждого файла в проекте. Затем метод определяет расширение файла – CS или VB. После этого также выводятся значения свойств Filesize и DateCreated.

    В разделе примера представлен полный код

  6. Чтобы построить надстройку, в меню Построение щелкните Построить решение.

  7. Откройте проект Visual C# или Visual Basic в интегрированной среде разработки Visual Studio.

  8. В меню Свойства щелкните Диспетчер надстроек и в диалоговом окне Диспетчер надстроек выберите надстройку. Нажмите ОК для выполнения надстройки.

Пример

Ниже приведен пример простой надстройки Visual Studio, которая демонстрирует доступ к свойствам файла в определенном типе проекта при помощи автоматизации в 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

Компиляция кода

Для компиляции кода создайте новый проект надстройки Visual Studio и замените код метода OnConnection кодом из данного примера. Сведения о запуске надстройки см. в разделе Практическое руководство. Управление надстройками с помощью диспетчера надстроек.

См. также

Основные понятия

Свойства проектов

Другие ресурсы

Доступ к свойствам Project, Project Item и Configuration, специфическим для типа проекта