Compartilhar via


Adicionar e remover páginas de propriedades

O Project Designer fornece um local centralizado para gerenciar propriedades, configurações e recursos do projeto no Visual Studio. Ele aparece como uma única janela no ambiente de desenvolvimento integrado (IDE) do Visual Studio e contém vários painéis à direita que são acessados por meio das guias à esquerda. Os painéis (geralmente chamados de páginas de propriedades) no Project Designer variam de acordo com o tipo e o idioma do projeto. O Project Designer pode ser acessado com o comando Propriedades no menu Projeto .

Um subtipo de projeto frequentemente precisa exibir páginas de propriedades adicionais no Project Designer. Da mesma forma, alguns subtipos de projeto podem exigir que as páginas de propriedades internas sejam removidas. Para fazer isso, o subtipo de projeto deve implementar a IVsHierarchy interface e substituir o GetProperty método. Substituindo esse método e usando propId o parâmetro que contém um dos valores da enumeração, você pode filtrar, adicionar ou remover propriedades do __VSHPROPID2 projeto. Por exemplo, talvez seja necessário adicionar uma página às páginas de propriedades dependentes da configuração. Para fazer isso, você precisa filtrar páginas de propriedades dependentes da configuração e, em seguida, adicionar uma nova página à lista existente.

Adicionar e remover páginas de propriedades no Project Designer

Remover uma página de propriedades

  1. Substitua o GetProperty(uint itemId, int propId, out object property) método para filtrar páginas de propriedades e obter uma clsids lista.

    protected override int GetProperty(uint itemId, int propId, out object property)
    {
        //Use propId to filter configuration-independent property pages.
        switch (propId)
        {
            . . . .
    
            case (int)__VSHPROPID2.VSHPROPID_PropertyPagesCLSIDList:
                {
                    //Get a semicolon-delimited list of clsids of the configuration-independent property pages
                    ErrorHandler.ThrowOnFailure(base.GetProperty(itemId, propId, out property));
                    string propertyPagesList = ((string)property).ToUpper(CultureInfo.InvariantCulture);
                    //Remove the property page here
                    . . . .
                }
             . . . .
         }
            . . . .
        return base.GetProperty(itemId, propId, out property);
    }
    
  2. Remova a página Eventos de compilação da lista obtida clsids .

    string buildEventsPageGuid = "{1E78F8DB-6C07-4D61-A18F-7514010ABD56}";
    int index = propertyPagesList.IndexOf(buildEventsPageGuid);
    if (index != -1)
    {
        // GUIDs are separated by ';' so if you remove the last GUID, also remove the last ';'
        int index2 = index + buildEventsPageGuid.Length + 1;
        if (index2 >= propertyPagesList.Length)
            propertyPagesList = propertyPagesList.Substring(0, index).TrimEnd(';');
        else
            propertyPagesList = propertyPagesList.Substring(0, index) + propertyPagesList.Substring(index2);
    }
    //New property value
    property = propertyPagesList;
    

Adicionar uma página de propriedades

  1. Crie uma página de propriedades que você deseja adicionar.

    class DeployPropertyPage : Form, Microsoft.VisualStudio.OLE.Interop.IPropertyPage
    {
        . . . .
        //Summary: Return a structure describing your property page.
        public void GetPageInfo(Microsoft.VisualStudio.OLE.Interop.PROPPAGEINFO[] pPageInfo)
        {
            PROPPAGEINFO info = new PROPPAGEINFO();
            info.cb = (uint)Marshal.SizeOf(typeof(PROPPAGEINFO));
            info.dwHelpContext = 0;
            info.pszDocString = null;
            info.pszHelpFile = null;
            info.pszTitle = "Deployment";  //Assign tab name
            info.SIZE.cx = this.Size.Width;
            info.SIZE.cy = this.Size.Height;
            if (pPageInfo != null && pPageInfo.Length > 0)
                pPageInfo[0] = info;
        }
    }
    
  2. Cadastre sua nova página de imóvel.

    [MSVSIP.ProvideObject(typeof(DeployPropertyPage), RegisterUsing = RegistrationMethod.CodeBase)]
    
  3. Substitua o GetProperty(uint itemId, int propId, out object property) método para filtrar páginas de propriedades, obter uma lista e adicionar uma clsids nova página de propriedades.

    protected override int GetProperty(uint itemId, int propId, out object property)
    {
        //Use propId to filter configuration-dependent property pages.
        switch (propId)
        {
            . . . .
            case (int)__VSHPROPID2.VSHPROPID_CfgPropertyPagesCLSIDList:
                {
                    //Get a semicolon-delimited list of clsids of the configuration-dependent property pages.
                    ErrorHandler.ThrowOnFailure(base.GetProperty(itemId, propId, out property));
                    //Add the Deployment property page.
                    property += ';' + typeof(DeployPropertyPage).GUID.ToString("B");
                }
         }
            . . . .
        return base.GetProperty(itemId, propId, out property);
    }