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


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

Общая модель автоматизации Visual Studio предоставляет коллекцию Properties, которую можно использовать для доступа к коллекциям Properties любого типа проекта Visual Studio. Кроме того, при помощи свойств проекта можно управлять параметрами безопасности, конфигурацией построения и отладки.

Чтобы вручную установить и проверить свойства проекта, откройте проект в интегрированной среде разработки Visual Studio. В меню Проект выберите пункт Свойства. В окне Свойства содержится несколько вкладок и в каждой области указаны свойства, при помощи которых можно определить поведение проектов и управлять ими. Модель автоматизации позволяет управлять этими параметрами программным образом. В частности, свойства, перечисленные в CSharpProjectConfigurationProperties4, VBProjectConfigurationProperties4 и ProjectConfigurationProperties3, позволяют управлять свойствами проекта, расположенными в областях окон Построение (Компиляция для проектов Visual Basic) и Отладка свойств на странице Свойства текущей активной конфигурации.

Можно также выбрать другую, не активную конфигурацию через объект ConfigurationManager. Дополнительные сведения см. в разделе Практическое руководство. Создание конфигураций построения решения и проекта.

Свойства конфигурации для проектов Visual C# определяются в CSharpProjectConfigurationProperties4. Свойства ErrorReport и LanguageVersion относятся только к проектам Visual C#. Остальные свойства в CSharpProjectConfigurationProperties3 соответствуют свойствам в ProjectConfigurationProperties3.

Эти свойства конфигурации недоступны по непосредственному приведению объекта Property к объекту CSharpProjectConfigurationProperties3 или объекту ProjectConfigurationProperties3. Чтобы получить доступ к свойствам, необходимо указать имя элемента конфигурации в виде строки (см. ниже):

    EnvDTE.Project proj;
    EnvDTE.Configuration config;
    EnvDTE.Properties configProps;
    EnvDTE.Property prop;
    proj = DTE.Solution.Projects.Item(1);
    config = proj.ConfigurationManager.ActiveConfiguration;
    configProps = config.Properties;
    prop = configProps.Item("EnableSQLServerDebugging")

Этот код обращается к свойству CSharpProjectConfigurationProperties3.EnableSQLServerDebugging или ProjectConfigurationProperties3.EnableSQLServerDebugging в зависимости от того, определяет переменная proj проект Visual C# или проект Visual Basic.

Фактически, свойства конфигурации, определенные в CSharpProjectConfigurationProperties3 или ProjectConfigurationProperties3, представляют собой список доступных свойств конфигурации для определенных проектов, к которым можно получить доступ как к элементами свойств конфигурации проекта через коллекцию Properties.

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

Примечание

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

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

  1. Создайте проект надстройки Visual Studio с помощью Visual C#, выбрав параметр для загрузки надстройки при запуске Visual Studio.

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

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

    using VSLangProj;
    using VSLangProj2;
    using VSLangProj80;
    using VSLangProj90;
    using VSLangProj100;
    using System.Windows.Forms;
    
  4. Добавьте в функцию OnConnection следующий вызов функции.

    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    VSProjectConfigProperties(_applicationObject);
    
  5. Добавьте метод VSProjectConfigProperties сразу после метода OnConnection.

    public void VSProjectConfigProperties(DTE2 dte)
    {
        try
        {
            // Open a Visual C# or Visual Basic project
            // before running this add-in.
            Project project;
            Configuration config;
            Properties configProps;
            Property prop;
            project = _applicationObject.Solution.Projects.Item(1);
            config = project.ConfigurationManager.ActiveConfiguration;
            configProps = config.Properties;
            prop = configProps.Item("PlatformTarget");
            MessageBox.Show("The platform target for this project is: "
     + prop.Value.ToString());
            prop = configProps.Item("WarningLevel");
            MessageBox.Show
    ("The warning level for this project is set to: " 
    + prop.Value.ToString());
            MessageBox.Show("Changing the warning level to 3...");
            prop.Value = "3";
            MessageBox.Show
    ("The warning level for this project is now set to: " 
    + prop.Value.ToString());
            if (project.Kind == PrjKind.prjKindCSharpProject)
            {
                MessageBox.Show("The project is a Visual C# Project");
                prop = configProps.Item("LanguageVersion");
                MessageBox.Show("The language version value is : " 
    + prop.Value.ToString());
                MessageBox.Show("Setting the language version to 
    ISO-1");
                prop.Value = "ISO-1";
                MessageBox.Show("The language version value is now: " 
    + prop.Value.ToString());
            }
    
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    

    Метод VSProjectConfigProperties возвращает и отображает значение свойства PlatformTarget. Он также возвращает или задает свойство WarningLevel. Если проект является проектом Visual C#, метод VSProjectConfigProperties задает и возвращает свойство LanguageVersion.

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

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

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

  9. Убедитесь, что порог предупреждений изменился, щелкнув пункт Свойства в меню Проект, и перейдите на вкладку Построение в окне Свойства.

    В поле Порог предупреждений отражается изменение, выполненное программным образом.

  10. Чтобы проверить параметр версии языка для проекта Visual C#, в области Построение окна Свойства щелкните Дополнительно.

    В поле Версия языка диалогового окна Дополнительные параметры построения отражается изменение, внесенное надстройкой.

Пример

Ниже приведен пример простой надстройки Visual Studio, которая демонстрирует доступ к свойствам определенного типа проекта при помощи автоматизации в Visual Studio.

using System;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using EnvDTE90;
using EnvDTE90a;
using EnvDTE100;
using System.Windows.Forms;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
using VSLangProj90;
using VSLangProj100;
public void OnConnection(object application, 
ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    VSProjectConfigProperties(_applicationObject);
}
public void VSProjectConfigProperties(DTE2 dte)
{
    try
    {
        // Open a Visual C# or Visual Basic project
        // before running this add-in.
        Project project;
        Configuration config;
        Properties configProps;
        Property prop;
        project = _applicationObject.Solution.Projects.Item(1);
        config = project.ConfigurationManager.ActiveConfiguration;
        configProps = config.Properties;
        prop = configProps.Item("PlatformTarget");
        MessageBox.Show("The platform target for this project is: 
" + prop.Value.ToString());
        prop = configProps.Item("WarningLevel");
        MessageBox.Show
("The warning level for this project is set to: " 
+ prop.Value.ToString());
        MessageBox.Show("Changing the warning level to 3...");
        prop.Value = "3";
        MessageBox.Show
("The warning level for this project is now set to: " 
+ prop.Value.ToString());
        if (project.Kind == PrjKind.prjKindCSharpProject)
        {
            MessageBox.Show("The project is a Visual C# Project");
            prop = configProps.Item("LanguageVersion");
            MessageBox.Show("The language version value is : " 
+ prop.Value.ToString());
            MessageBox.Show("Setting the language version to ISO-1");
            prop.Value = "ISO-1";
            MessageBox.Show("The language version value is now: " 
+ 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
Imports VSLangProj90
Imports VSLangProj100
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 config As Configuration
        Dim configProps As Properties
        Dim prop As [Property]
        project = _applicationObject.Solution.Projects.Item(1)
        config = project.ConfigurationManager.ActiveConfiguration
        configProps = config.Properties
        prop = configProps.Item("PlatformTarget")
        MsgBox("The platform target for this project is: "  _
        & prop.Value.ToString())
        prop = configProps.Item("WarningLevel")
        MsgBox("The warning level for this project is set to: "  _
        & prop.Value.ToString())
        MsgBox("Changing the warning level to 3...")
        prop.Value = "3"
        MsgBox("The warning level for this project is now set to: " _
        & prop.Value.ToString())
        If project.Kind = PrjKind.prjKindCSharpProject Then
            MsgBox("The project is a Visual C# Project")
            prop = configProps.Item("LanguageVersion")
            MsgBox("The language version value is : "  _
            & prop.Value.ToString())
            MsgBox("Setting the language version to ISO-1")
            prop.Value = "ISO-1"
            MsgBox("The language version value is now: "  _
            & prop.Value.ToString())
        End If
    Catch ex As System.Exception
        MsgBox(ex.ToString)
    End Try
End Sub

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

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

См. также

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

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

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

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