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
Substitua o
GetProperty(uint itemId, int propId, out object property)
método para filtrar páginas de propriedades e obter umaclsids
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); }
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
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; } }
Cadastre sua nova página de imóvel.
Substitua o
GetProperty(uint itemId, int propId, out object property)
método para filtrar páginas de propriedades, obter uma lista e adicionar umaclsids
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); }