c# - EnvDTE 遍历解决方案中的子文件夹

标签 c# subdirectory envdte

在 VS 解决方案中有以下结构:

现在,我想获取对“Catalogs”文件夹的引用并将其存储在变量中:

        //Solution_Name
        //    ConfigurationObjects
        //        Catalogs
        //        Documents

    foreach (Project item1 in AttachedSolution.Projects)
    {
        if (item1.Kind == ProjectKinds.vsProjectKindSolutionFolder)
        {
            if (item1.Name == "ConfigurationObjects")
            {
                SolutionFolder catalogBaseFolder = (SolutionFolder)item1.Object;

                foreach (ProjectItem item2 in item1.ProjectItems)
                {
                    if ( item2.Name == "Catalogs")
                    {
                        this.CatalogObjectsFolder = (SolutionFolder)item2;
                    // raises error here: Unable to cast COM object of type                   
                    //'System.__ComObject' 
                    //to interface type 'EnvDTE80.SolutionFolder'.
                    };
                };
            };
        };
    };

感谢您的帮助。

最佳答案

非第一级的解决方案文件夹建模为 EnvDTE.Project,而不是 EnvDTE80.SolutionFolder。您可以使用 projectItem.SubProject 属性从 projectItem 获取项目。然后使用 Project.Object 获取 EnvDTE80.SolutionFolder

参见:

HOWTO: Navigate the files of a solution from a Visual Studio .NET macro or add-in

How to create a solution folder inside another solution folder

关于c# - EnvDTE 遍历解决方案中的子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30767129/

相关文章:

c# - dll 中的 WPF 自定义控件

c# - 发送命令后如何捕获串口的返回?

visual-studio - 使用自定义加载项更改 Visual Studio 颜色的性能

c# - 如何获取项目下的文件夹?

c# - 如何使用 IVsSolution.CreateProject 以编程方式重新加载现有的已卸载的 c# 项目

c# - string.Format 异常输入字符串的格式不正确

Angular 2 : assets not loaded when deployed in subdirectory

apache - 使用 .htaccess 重写规则重定向到我服务器上的不同文件夹

linux - 将目录权限应用于 linux 中的所有新子目录

c# - 输出错误。我的随机数在哪里?