// ========================================================================================= // Methods // ========================================================================================= /// <summary> /// Hides all of the tabs in the Add Reference dialog except for the browse tab, which will search for wixlibs. /// </summary> /// <param name="project">The project that will contain the reference.</param> /// <returns>If the method succeeds, it returns S_OK. If it fails, it returns an error code.</returns> internal static int AddProjectReference(WixProjectNode project) { CCITracing.TraceCall(); Guid showOnlyThisTabGuid = Guid.Empty; Guid startOnThisTabGuid = VSConstants.GUID_BrowseFilePage; string helpTopic = "VS.AddReference"; string machineName = String.Empty; string browseFilters = WixProjectReferenceNode.AddReferenceDialogFilter; string browseLocation = WixProjectReferenceNode.GetAddReferenceDialogInitialDirectory(project.WixPackage); // initialize the structure that we have to pass into the dialog call VSCOMPONENTSELECTORTABINIT[] tabInitializers = new VSCOMPONENTSELECTORTABINIT[2]; // tab 1 is the Project References tab: passing VSHPROPID_ShowProjInSolutionPage will tell the Add Reference // dialog to call into our GetProperty to determine if we should show ourself in the dialog tabInitializers[0].dwSize = (uint)Marshal.SizeOf(typeof(VSCOMPONENTSELECTORTABINIT)); tabInitializers[0].guidTab = VSConstants.GUID_SolutionPage; tabInitializers[0].varTabInitInfo = (int)__VSHPROPID.VSHPROPID_ShowProjInSolutionPage; // tab 2 is the Browse tab tabInitializers[1].dwSize = (uint)Marshal.SizeOf(typeof(VSCOMPONENTSELECTORTABINIT)); tabInitializers[1].guidTab = VSConstants.GUID_BrowseFilePage; tabInitializers[1].varTabInitInfo = 0; // initialize the flags to control the dialog __VSCOMPSELFLAGS flags = __VSCOMPSELFLAGS.VSCOMSEL_HideCOMClassicTab | __VSCOMPSELFLAGS.VSCOMSEL_HideCOMPlusTab | __VSCOMPSELFLAGS.VSCOMSEL_IgnoreMachineName | __VSCOMPSELFLAGS.VSCOMSEL_MultiSelectMode; // get the dialog service from the environment IVsComponentSelectorDlg dialog = WixHelperMethods.GetService <IVsComponentSelectorDlg, SVsComponentSelectorDlg>(project.Site); try { // show the dialog ErrorHandler.ThrowOnFailure(dialog.ComponentSelectorDlg( (uint)flags, (IVsComponentUser)project, WixProjectReferenceNode.AddReferenceDialogTitle, helpTopic, ref showOnlyThisTabGuid, ref startOnThisTabGuid, machineName, (uint)tabInitializers.Length, tabInitializers, browseFilters, ref browseLocation)); } catch (COMException e) { CCITracing.Trace(e); return(e.ErrorCode); } return(VSConstants.S_OK); }
// ========================================================================================= // Methods // ========================================================================================= /// <summary> /// Hides all of the tabs in the Add Reference dialog except for the browse tab, which will search for wixlibs. /// </summary> /// <returns>If the method succeeds, it returns S_OK. If it fails, it returns an error code.</returns> public override int AddProjectReference() { try { this.ShowProjectInSolutionPage = false; return(WixProjectReferenceNode.AddProjectReference(this)); } finally { this.ShowProjectInSolutionPage = true; } }
// ========================================================================================= // Constructors // ========================================================================================= /// <summary> /// Initializes a new instance of the <see cref="WixProjectReferenceNodeProperties"/> class. /// </summary> /// <param name="node">The node that contains the properties to expose via the Property Browser.</param> public WixProjectReferenceNodeProperties(WixProjectReferenceNode node) : base(node) { }