在Visual Studio中修改自定义项目系统的项目属性

时间:2015-02-16 05:04:43

标签: visual-studio visual-studio-extensions vsix vsx vspackage

我试图通过遍历https://msdn.microsoft.com/en-us/library/vstudio/cc512961.aspx创建自定义项目系统并成功完成。现在我想修改这个创建的项目系统的项目属性。本演练的第二部分是指导为解决方案属性创建属性页面。 (解决方案资源管理器 - >右键单击解决方案并选择属性)我不想修改解决方案属性,我需要通过添加新选项卡来自定义项目属性(解决方案资源管理器 - >右键单击项目并选择属性)和我的自定义项目系统的其他项目。请尽快帮助我......

1 个答案:

答案 0 :(得分:1)

如果您的项目系统基于MPF自定义标签页,则可以通过ProjectNode课程进行整合。该类定义GetConfigurationIndependentPropertyPagesGetConfigurationDependentPropertyPages方法;这些是虚方法,可以通过任何派生类型实现,以返回IPropertyPage实现的类型ID。

internal class CustomProjectNode : ProjectNode
{
    protected override Guid[] GetConfigurationIndependentPropertyPages()
    {
        return new[] 
        {
            typeof(MyCustomPropertyPage).Guid
        };
    }
}

IPropertyPage接口是项目系统和UI之间的连接器,允许更改属性,其中UI是一个ordenary窗口(通常是Windows窗体Control)。如果想要控制type-guid,则必须使用ComVisible - 和ClassInterface - 属性以及可选的Guid - 属性标记属性页面实现。

[ComVisible(true)]
[Guid("...")]
[ClassInterface(ClassInterfaceType.AutoDual)]
internal class MyCustomPropertyPage : IPropertyPage
{
    ...
}

此外,必须通过包类上的ProvideObject - 属性公开属性页类型。

[ProvideObject(typeof(MyCustomPropertyPage))]
class MyPackage : Package
{
}

最后,要使属性页显示为选项卡,必须将自定义项目节点的SupportsProjectDesigner属性设置为true

internal class CustomProjectNode : ProjectNode
{
    public CustomProjectNode() 
    {
        this.SupportsProjectDesigner = true;
    }
}