c# - Visual Studio 可扩展性,如何枚举解决方案中的项目?

标签 c# visual-studio-2008

只是想跟上 SDK 的速度...

所以,我创建了自己的工具窗口....

现在我想遍历当前加载的解决方案中的现有项目,并在工具窗口中显示它们的名称....

但不太确定枚举项目的最佳方式是什么?有什么线索吗?

最佳答案

检查这个code by Microsoft :

    static public IEnumerable<IVsProject> LoadedProjects
    {
        get
        {
            var solution = _serviceProvider.GetService(typeof(SVsSolution)) as IVsSolution;
            if (solution == null)
            {
                Debug.Fail("Failed to get SVsSolution service.");
                yield break;
            }

            IEnumHierarchies enumerator = null;
            Guid guid = Guid.Empty;
            solution.GetProjectEnum((uint)__VSENUMPROJFLAGS.EPF_LOADEDINSOLUTION, ref guid, out enumerator);
            IVsHierarchy[] hierarchy = new IVsHierarchy[1] { null };
            uint fetched = 0;
            for (enumerator.Reset(); enumerator.Next(1, hierarchy, out fetched) == VSConstants.S_OK && fetched == 1; /*nothing*/)
            {
                yield return (IVsProject)hierarchy[0];
            }
        }
    }

关于c# - Visual Studio 可扩展性,如何枚举解决方案中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/304361/

相关文章:

C# 如果在 SQL 更新中可用,否则插入

c# - .Net 和 C# 中的多态数值

c++ - 如何在 Visual Studio 2008 C++ 中捕获被零除错误?

.net - 是否有针对 .NET 1.1 与 VS 2008 的插件?

visual-studio-2008 - VS2008立即丢失的窗口

vb.net - 超时已过。操作完成前超时时间已过或服务器未响应

c# - 从 UpdatePanel/javascript 调用 C# getter - 永远不会获取更新的数据

c# - Windows 服务安装程序不读取 App.Config 文件

c# - 如何对 List<T> 进行排序?

vb.net - 在 lambda 中调用方法时未命中断点