Example #1
0
        private IProjectManager GetProjectManagerForFileImpl(string filePath)
        {
            var hier = new RunningDocumentTable(serviceProvider).GetHierarchyItem(filePath);

            if (hier == null)
            {
                return(null);
            }

            object value;

            if (ErrorHandler.Failed(hier.GetProperty(VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_TypeName, out value)))
            {
                return(null);
            }

            if (value.ToString() != BooProjectNode.PROJECT_NAME)
            {
                return(null);
            }

            if (ErrorHandler.Failed(hier.GetProperty(VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_Root, out value)))
            {
                return(null);
            }

            var pointer = new IntPtr((int)value);

            try
            {
                return(Marshal.GetObjectForIUnknown(pointer) as IProjectManager);
            }
            finally
            {
                Marshal.Release(pointer);
            }
        }
Example #2
0
        private IProjectManager GetProjectManagerForFileImpl(string filePath)
        {
            var hier = new RunningDocumentTable(serviceProvider).GetHierarchyItem(filePath);

            if (hier == null)
                return null;

            object value;

            if (ErrorHandler.Failed(hier.GetProperty(VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_TypeName, out value)))
                return null;

            if (value.ToString() != BooProjectNode.PROJECT_NAME)
                return null;

            if (ErrorHandler.Failed(hier.GetProperty(VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_Root, out value)))
                return null;

            var pointer = new IntPtr((int)value);
            try
            {
                return Marshal.GetObjectForIUnknown(pointer) as IProjectManager;
            }
            finally
            {
                Marshal.Release(pointer);
            }
        }