protected override void SetInnerProject(IntPtr innerIUnknown) { object objectForIUnknown = null; objectForIUnknown = Marshal.GetObjectForIUnknown(innerIUnknown); if (base.serviceProvider == null) { base.serviceProvider = _package; } base.SetInnerProject(innerIUnknown); _innerVsProjectFlavorCfgProvider = objectForIUnknown as IVsProjectFlavorCfgProvider; }
protected override void Close() { base.Close(); if (innerVsProjectFlavorCfgProvider != null) { if (Marshal.IsComObject(innerVsProjectFlavorCfgProvider)) { Marshal.ReleaseComObject(innerVsProjectFlavorCfgProvider); } innerVsProjectFlavorCfgProvider = null; } }
protected override void SetInnerProject(IntPtr innerIUnknown) { object inner = null; inner = Marshal.GetObjectForIUnknown(innerIUnknown); if (base.serviceProvider == null) { base.serviceProvider = this.package; } base.SetInnerProject(innerIUnknown); this.innerVsProjectFlavorCfgProvider = inner as IVsProjectFlavorCfgProvider; }
public ProjectConfig(ProjectNode project, string configuration) { this.project = project; this.configName = configuration; // Initialize output groups // Get the list of group names from the project. // The main reason we get it from the project is to make it easier for someone to modify // it by simply overriding that method and providing the correct MSBuild target(s). IList <KeyValuePair <string, string> > groupNames = project.GetOutputGroupNames(); if (groupNames != null) { // Populate the output array foreach (KeyValuePair <string, string> group in groupNames) { OutputGroup outputGroup = CreateOutputGroup(project, group); this.outputGroups.Add(outputGroup); } } // Because the project can be aggregated by a flavor, we need to make sure // we get the outer most implementation of that interface (hence: project --> IUnknown --> Interface) IntPtr projectUnknown = Marshal.GetIUnknownForObject(this.ProjectMgr); try { IVsProjectFlavorCfgProvider flavorCfgProvider = (IVsProjectFlavorCfgProvider)Marshal.GetTypedObjectForIUnknown(projectUnknown, typeof(IVsProjectFlavorCfgProvider)); ErrorHandler.ThrowOnFailure(flavorCfgProvider.CreateProjectFlavorCfg(this, out flavoredCfg)); if (flavoredCfg == null) { throw new COMException(); } } finally { if (projectUnknown != IntPtr.Zero) { Marshal.Release(projectUnknown); } } // if the flavored object support XML fragment, initialize it if (flavoredCfg is IPersistXMLFragment) { this.project.LoadXmlFragment((IPersistXMLFragment)flavoredCfg, this.DisplayName); } }
protected override void SetInnerProject(IntPtr innerIUnknown) { var inner = Marshal.GetObjectForIUnknown(innerIUnknown); // The reason why we keep a reference to those is that doing a QI after being // aggregated would do the AddRef on the outer object. _innerVsProjectFlavorCfgProvider = inner as IVsProjectFlavorCfgProvider; _innerProject = inner as IVsProject; _innerProject3 = inner as IVsProject3; _innerVsHierarchy = inner as IVsHierarchy; // Ensure we have a service provider as this is required for menu items to work if (serviceProvider == null) { serviceProvider = _serviceProvider; } // Now let the base implementation set the inner object base.SetInnerProject(innerIUnknown); // Add our commands (this must run after we called base.SetInnerProject) _menuService = ((System.IServiceProvider) this).GetService(typeof(IMenuCommandService)) as OleMenuCommandService; #if !DJANGO_HTML_EDITOR try { var outputWindow = OutputWindowRedirector.GetGeneral(this); outputWindow.WriteErrorLine("NOTE: Django template support has been disabled in the editor due to a\r\n" + "compatibility issue and will be restored in a future update."); outputWindow.ShowAndActivate(); var shell = ((System.IServiceProvider) this).GetService(typeof(SVsUIShell)) as IVsUIShell; if (shell != null) { var windowGuid = new Guid("{34E76E81-EE4A-11D0-AE2E-00A0C90FFFC3}"); if (ErrorHandler.Succeeded(shell.FindToolWindow(0, ref windowGuid, out IVsWindowFrame wnd)) && wnd != null) { wnd.Show(); } } } catch (Exception ex) { Debug.Fail(ex.ToUnhandledExceptionMessage(GetType())); } #endif }
protected override void SetInnerProject(IntPtr innerIUnknown) { object objectForIUnknown = null; objectForIUnknown = Marshal.GetObjectForIUnknown(innerIUnknown); if (base.serviceProvider == null) { base.serviceProvider = _package; } base.SetInnerProject(innerIUnknown); _innerVsProjectFlavorCfgProvider = objectForIUnknown as IVsProjectFlavorCfgProvider; _menuService = (IOleCommandTarget)((System.IServiceProvider) this).GetService(typeof(IMenuCommandService)); if (_menuService == null) { throw new InvalidOperationException("Unable to get menu command service"); } }
public ProjectConfig(ProjectNode project, string configuration) { this.project = project; // !EFW - Bug in VS2015 or an incompatibility with the older MPF project system. This can get // passed an invalid configuration value such as "Debug|Any CPU". As a workaround, trim off the // invalid part. if (!String.IsNullOrWhiteSpace(configuration) && configuration.IndexOf('|') != -1) { this.configName = configuration.Substring(0, configuration.IndexOf('|')); } else { this.configName = configuration; } // Because the project can be aggregated by a flavor, we need to make sure // we get the outer most implementation of that interface (hence: project --> IUnknown --> Interface) IntPtr projectUnknown = Marshal.GetIUnknownForObject(this.ProjectMgr); try { IVsProjectFlavorCfgProvider flavorCfgProvider = (IVsProjectFlavorCfgProvider)Marshal.GetTypedObjectForIUnknown(projectUnknown, typeof(IVsProjectFlavorCfgProvider)); ErrorHandler.ThrowOnFailure(flavorCfgProvider.CreateProjectFlavorCfg(this, out flavoredCfg)); if (flavoredCfg == null) { throw new COMException(); } } finally { if (projectUnknown != IntPtr.Zero) { Marshal.Release(projectUnknown); } } // if the flavored object support XML fragment, initialize it IPersistXMLFragment persistXML = flavoredCfg as IPersistXMLFragment; if (null != persistXML) { this.project.LoadXmlFragment(persistXML, this.DisplayName); } }
public ProjectConfig(ProjectNode project, string canonicalName) { this.project = project; string configName; string platformName; TrySplitConfigurationCanonicalName(canonicalName, out configName, out platformName); ConfigurationName = configName; PlatformName = platformName; // Because the project can be aggregated by a flavor, we need to make sure // we get the outer most implementation of that interface (hence: project --> IUnknown --> Interface) IntPtr projectUnknown = Marshal.GetIUnknownForObject(this.ProjectMgr); try { IVsProjectFlavorCfgProvider flavorCfgProvider = (IVsProjectFlavorCfgProvider)Marshal.GetTypedObjectForIUnknown(projectUnknown, typeof(IVsProjectFlavorCfgProvider)); ErrorHandler.ThrowOnFailure(flavorCfgProvider.CreateProjectFlavorCfg(this, out flavoredCfg)); if (flavoredCfg == null) { throw new COMException(); } } finally { if (projectUnknown != IntPtr.Zero) { Marshal.Release(projectUnknown); } } // if the flavored object support XML fragment, initialize it IPersistXMLFragment persistXML = flavoredCfg as IPersistXMLFragment; if (null != persistXML) { this.project.LoadXmlFragment(persistXML, ConfigKey); } }
protected override void SetInnerProject(IntPtr innerIUnknown) { var inner = Marshal.GetObjectForIUnknown(innerIUnknown); // The reason why we keep a reference to those is that doing a QI after being // aggregated would do the AddRef on the outer object. _innerVsProjectFlavorCfgProvider = inner as IVsProjectFlavorCfgProvider; _innerProject = inner as IVsProject; _innerProject3 = inner as IVsProject3; _innerVsHierarchy = inner as IVsHierarchy; // Ensure we have a service provider as this is required for menu items to work if (serviceProvider == null) { serviceProvider = _serviceProvider; } // Now let the base implementation set the inner object base.SetInnerProject(innerIUnknown); // Add our commands (this must run after we called base.SetInnerProject) _menuService = ((System.IServiceProvider) this).GetService(typeof(IMenuCommandService)) as OleMenuCommandService; }
protected override void SetInnerProject(IntPtr innerIUnknown) { var inner = Marshal.GetObjectForIUnknown(innerIUnknown); // The reason why we keep a reference to those is that doing a QI after being // aggregated would do the AddRef on the outer object. _innerVsProjectFlavorCfgProvider = inner as IVsProjectFlavorCfgProvider; _innerProject = inner as IVsProject; _innerProject3 = inner as IVsProject3; _innerVsHierarchy = inner as IVsHierarchy; if (serviceProvider == null) { serviceProvider = _site; } // Now let the base implementation set the inner object base.SetInnerProject(innerIUnknown); // Get access to the menu service used by FlavoredProjectBase. We // need to forward IOleCommandTarget functions to this object, since // we override the FlavoredProjectBase implementation with no way to // call it directory. // (This must run after we called base.SetInnerProject) _menuService = (IOleCommandTarget)((IServiceProvider)this).GetService(typeof(IMenuCommandService)); if (_menuService == null) { throw new InvalidOperationException("Cannot initialize Web project"); } }
protected override void SetInnerProject(IntPtr innerIUnknown) { var inner = Marshal.GetObjectForIUnknown(innerIUnknown); // The reason why we keep a reference to those is that doing a QI after being // aggregated would do the AddRef on the outer object. _innerProject = inner as IVsProject; _innerProject3 = inner as IVsProject3; _innerVsHierarchy = inner as IVsHierarchy; _innerVsProjectFlavorCfgProvider = inner as IVsProjectFlavorCfgProvider; // Ensure we have a service provider as this is required for menu items to work if (this.serviceProvider == null) this.serviceProvider = (System.IServiceProvider)this._package; // Now let the base implementation set the inner object base.SetInnerProject(innerIUnknown); // Add our commands (this must run after we called base.SetInnerProject) _menuService = ((System.IServiceProvider)this).GetService(typeof(IMenuCommandService)) as OleMenuCommandService; }
protected override void SetInnerProject(IntPtr innerIUnknown) { object objectForIUnknown = null; objectForIUnknown = Marshal.GetObjectForIUnknown(innerIUnknown); if (base.serviceProvider == null) { base.serviceProvider = _package; } base.SetInnerProject(innerIUnknown); _innerVsProjectFlavorCfgProvider = objectForIUnknown as IVsProjectFlavorCfgProvider; _menuService = (IOleCommandTarget)((System.IServiceProvider)this).GetService(typeof(IMenuCommandService)); if (_menuService == null) { throw new InvalidOperationException("Unable to get menu command service"); } }