为项目和配置属性支持

属性 窗口中 Visual Studio 集成开发环境 (ide) (IDE) 可以显示项和配置属性。 可以为提供属性页拥有项目类型,以便用户可以设置应用程序的属性。

通过选择在 解决方案资源管理器 的项目节点然后单击 属性项目 菜单,可以打开包含项目和配置属性的对话框。 在 Visual C# 和 Visual Basic,因此,项类型从这些语言派生,则将显示此对话框,在 “选项”对话框 ->“环境”->“常规”的选项卡式页。 有关更多信息,请参见 Walkthrough: Exposing Project and Configuration Properties

项目 (MPFProj) 托管包框架用于创建和管理新项目系统提供帮助器类。 可以找到源代码和生成命令。 MPF for Projects - Visual Studio 2010

项和配置属性的持久性

项目和配置属性在具有文件扩展名与项目类型,例如, .csproj、 .vbproj 和 .myproj 的项目文件仍然存在。 语言项目通常使用一个模板文件生成项目文件。 但是,实际上有多个键关联项目类型和模板。 有关更多信息,请参见Visual Studio Templates模板内容 (声明。Vsdir 文件)

项目和配置属性通过将项添加到模板创建文件。 这些属性是所有项都可以使用的创建使用此模板的项目类型。 Visual C# 项目和 MPFProj 两个为模板文件使用 MSBuild 模式。 这些文件有一个配置的一个 PropertyGroup 部分。 项目属性在第一个 PropertyGroup 部分通常保留,具有配置参数设置为空字符串。

下面的代码演示一个基本的 MSBuild 项目文件的开头。

<Project MSBuildVersion="2.0" DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Name>SomeProjectSix</Name>
    <SchemaVersion>2.0</SchemaVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <Optimize>false</Optimize>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <Optimize>true</Optimize>

此项目文件, <Name> 和 <SchemaVersion> 是项目属性,并且, <Optimize> 是配置属性。

是项目的职责保存项目文件的项和配置属性。

备注

项目可以通过保存优化持久性与其默认操作仅的属性值。

为项目和配置属性支持

Microsoft.VisualStudio.Package.SettingsPage 类实现项和配置属性页。 SettingsPage 的默认实现为常规属性网格的用户提供公共属性。 Microsoft.VisualStudio.Package.HierarchyNode.GetPropertyPageGuids 方法为项目属性网格中选择 SettingsPage 从派生的类。 Microsoft.VisualStudio.Package.ProjectNode.GetConfigPropertyPageGuids 方法用于配置属性网格中选择 SettingsPage 从派生的类。 项类型应该重写这些方法选择适当的属性页。

SettingsPage 类和 Microsoft.VisualStudio.Package.ProjectNode 类提供这些方法保存项目和配置属性:

  • Microsoft.VisualStudio.Package.ProjectNode.GetProjectProperty 和 Microsoft.VisualStudio.Package.ProjectNode.SetProjectProperty 保存项目属性。

  • Microsoft.VisualStudio.Package.SettingsPage.GetConfigProperty 和 Microsoft.VisualStudio.Package.SettingsPage.SetConfigProperty 保持配置属性。

    备注

    Microsoft.VisualStudio.Package.SettingsPage 和 Microsoft.VisualStudio.Package.ProjectNode 类的实现使用 Microsoft.Build.BuildEngine (MSBuild) 方法获取和设置项目和配置属性从项目文件。

您 SettingsPage 从派生的类必须实现 Microsoft.VisualStudio.Package.SettingsPage.ApplyChanges 和 Microsoft.VisualStudio.Package.SettingsPage.BindProperties 保存项目文件的项目或配置属性。

ProvideObjectAttribute 和注册表路径

从 SettingsPage 派生的类设计为在 Vspackage 中共享。 若要使 VSPackage 可以创建从 SettingsPage派生的类中,添加 Microsoft.VisualStudio.Shell.ProvideObjectAttribute 到从 Microsoft.VisualStudio.Shell.Package派生的类。

<ProvideObject(GetType(MyProjectPropertyPage))> _ 
<Guid("e815d8ad-49bf-427d-99c8-009db3e56ab9")> _
Public Class MyPackage
    Inherits Package
[ProvideObject(typeof(MyProjectPropertyPage))]
[Guid("e815d8ad-49bf-427d-99c8-009db3e56ab9")]
public sealed class MyPackage : Package

属性附加的 VSPackage 无关紧要。 在 VSPackage 到 Visual Studio注册时,类 ID (CLSID 可以创建) 的所有对象注册,以便为 CreateInstance 的调用可以创建它。

可以创建合并 UserRegistryRoot、单词、 CLSID 和目标类型的 GUID 取决于对象的注册表路径。 如果 MyProjectPropertyPage 类具有 {} 3c693da2-5bca-49b3-bd95-ffe0a39dd723 GUID,并 UserRegistryRoot 是 \Software\Microsoft\VisualStudio\8.0Exp, then the registry path would be HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp\CLSID HKEY_CURRENT_USER \ 3c693da2-5bca-49b3-bd95-ffe0a39dd723 {}。

项和配置属性和布局

CategoryAttributeDisplayNameAttributeDescriptionAttribute 属性确定项和配置属性的布局,标记和说明在常规属性页的。 这些属性确定该选项类别、显示名称和说明,分别。

备注

等效属性、 SRCategory、 LocDisplayName 和 SRDescription,使用本地化的字符串资源和定义 MPF for Projects - Visual Studio 2010

考虑以下代码片断:

Private _myConfigProp As String 
Private _isDirty As Boolean 

Public Property IsDirty As Boolean 
    Get 
        Return _isDirty
    End Get 
    Set(ByVal value As Boolean)
        _isDirty = value
    End Set 
End Property

<Category("My Category")> _
<DisplayName("My Config Property")> _
<Description("My Description")> _
Public Property MyConfigProp() As String 
    Get 
        Return _myConfigProp
    End Get 
    Set(ByVal value As String)
        _myConfigProp = value
        IsDirty = True 
    End Set 
End Property
public bool IsDirty { get; set; }
private string myConfigProp;

[Category("My Category")]
[DisplayName("My Config Property")]
[Description("My Description")]
public string MyConfigProp
{
    get { return myConfigProp; }
    set { myConfigProp = value; IsDirty = true; }
}

MyConfigProp 配置属性显示在 " 配置属性页作为类别中的 我的属性我的类别。 如果该选项处于选中状态,声明, 我的说明,显示在图例面板。

请参见

任务

如何:添加和移除属性页

概念

模板内容 (声明。Vsdir 文件)

其他资源

Walkthrough: Exposing Project and Configuration Properties

VSPackage 状态

项目 (Visual Studio SDK)

Visual Studio Templates