Hinzufügen und Entfernen von Eigenschaftenseiten
Der Project Designer bietet einen zentralen Speicherort zum Verwalten von Projekteigenschaften, Einstellungen und Ressourcen in Visual Studio. Sie wird als einzelnes Fenster in der integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) von Visual Studio angezeigt und enthält eine Reihe von Bereichen auf der rechten Seite, auf die über die Registerkarten auf der linken Seite zugegriffen wird. Die Bereiche (häufig als Eigenschaftenseiten bezeichnet) im Project Designer variieren je nach Projekttyp und Sprache. Auf den Projekt-Designer kann über den Befehl 'Eigenschaften' im Menü 'Projekt ' zugegriffen werden.
Ein Projektuntertyp muss häufig zusätzliche Eigenschaftenseiten im Project Designer anzeigen. Ebenso müssen einige Projektuntertypen möglicherweise integrierte Eigenschaftenseiten entfernt werden. Dazu muss ihr Projektuntertyp die IVsHierarchy Schnittstelle implementieren und die GetProperty Methode überschreiben. Indem Sie diese Methode außer Kraft setzen und den Parameter verwenden propId
, der einen der Werte der __VSHPROPID2 Enumeration enthält, können Sie Projekteigenschaften filtern, hinzufügen oder entfernen. Beispielsweise müssen Sie möglicherweise eine Seite zu den konfigurationsabhängigen Eigenschaftenseiten hinzufügen. Dazu müssen Sie konfigurationsabhängige Eigenschaftenseiten filtern und dann der vorhandenen Liste eine neue Seite hinzufügen.
Hinzufügen und Entfernen von Eigenschaftenseiten in Project Designer
Entfernen einer Eigenschaftenseite
Überschreiben Sie die
GetProperty(uint itemId, int propId, out object property)
Methode zum Filtern von Eigenschaftenseiten und Abrufen einerclsids
Liste.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); }
Entfernen Sie die Seite "Buildereignisse " aus der abgerufenen
clsids
Liste.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;
Hinzufügen einer Eigenschaftenseite
Erstellen Sie eine Eigenschaftenseite, die Sie hinzufügen möchten.
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; } }
Registrieren Sie ihre neue Eigenschaftenseite.
Überschreiben Sie die
GetProperty(uint itemId, int propId, out object property)
Methode zum Filtern von Eigenschaftenseiten, Abrufen einerclsids
Liste und Hinzufügen einer neuen Eigenschaftenseite.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); }