如何在 VSIX 项目中的解决方案文件夹中获取项目

2023-12-20

您好,我在 Visual Studio 扩展内的自定义构建任务遇到问题。我需要识别我的自定义项目类型的项目。如果它们位于解决方案的根目录中,我可以很好地做到这一点,但是当它位于解决方案文件夹内时,就会出现问题。我可以将解决方案文件夹作为 EnvDTE.Project 获取,但不确定如何从该文件夹中获取项目。

我以为我可以从项目集合属性中获取它,但它是空的。

任何帮助将不胜感激。

if (Scope == EnvDTE.vsBuildScope.vsBuildScopeSolution)
{
    DTE2 dte2 = Package.GetGlobalService(typeof(EnvDTE.DTE)) as DTE2;
    var sol = dte2.Solution;
    EnvDTE.DTE t = dte2.DTE;
    var x = t.Solution.Projects;
    foreach(var proj in x)
    {
       try
       {
           var project = proj as EnvDTE.Project;
           var guid = GetProjectTypeGuids(project);
           if (guid.Contains("FOLDERGUID"))
           {
               //here is where I would get the project from the folder
           }

我通过更多的研究和一些尝试和错误设法解决了这个问题。如果其他人遇到这个问题,我将主要代码更改为

if (Scope == EnvDTE.vsBuildScope.vsBuildScopeSolution)
{
    errorListProvider.Tasks.Clear();
    DTE2 dte2 = Package.GetGlobalService(typeof(DTE)) as DTE2;
    var sol = dte2.Solution;
    var projs = sol.Projects;
    foreach(var proj in sol)
    {
         var project = proj as Project;
         if (project.Kind == ProjectKinds.vsProjectKindSolutionFolder)
         {
             var innerProjects = GetSolutionFolderProjects(project);
             foreach(var innerProject in innerProjects)
             {
                 //carry out actions here.
             }
         }
    }
}

GetSolutionFolderForProjects 的代码是

private IEnumerable<Project> GetSolutionFolderProjects(Project project)
{
    List<Project> projects = new List<Project>();
    var y = (project.ProjectItems as ProjectItems).Count;
    for(var i = 1; i <= y; i++)
    {
        var x = project.ProjectItems.Item(i).SubProject;
        var subProject = x as Project;
        if (subProject != null)
        {
          //Carried out work and added projects as appropriate
        }
    }

    return projects;
}

希望这对其他人有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 VSIX 项目中的解决方案文件夹中获取项目 的相关文章

随机推荐

  • Python:filter(函数,序列)和map(函数,序列)之间的区别

    我正在阅读 Python 文档 以真正深入了解 Python 语言 并遇到了过滤器和映射函数 我以前使用过过滤器 但从未使用过映射 尽管我在 SO 的各种 Python 问题中都看到过这两种情况 在阅读了 Python 教程中的相关内容后
  • 使用@Factory和@DataProvider进行TestNG

    我对 TestNG 和 Java 编程非常陌生 我对一起使用 Factory 和 DataProvider 有疑问 我想测试多次提交网络表单 每次使用不同的输入数据 我有以下代码 public class SolicitudEmpleo e
  • Chart.js:在饼图之外显示标签

    图表 js 2 6 0 我需要渲染一个如下所示的图表 始终显示所有工具提示不是可接受的方式 因为它们不会以正确的方式呈现 不幸的是我还没有找到解决方案 我已经尝试过件标签插件 但这有同样的问题 因为它的标签重叠 我无法隐藏某些标签 这是使用
  • 在 Rails 中保存和检索数组

    我正在 Rails 中开发电子学习 我想将一组数组保存到数据库中 目的是跟踪用户在电子学习各个部分的进度 我遇到过这个问题并回答 在数据库中存储数组 JSON 与序列化数组 https stackoverflow com questions
  • QQuickView - 无延迟/滞后地调整内容大小

    图像通常是解释某事的最简单方法 这是我遇到的问题的一个小屏幕截图 如果您查看窗口的右侧 您可以看到内容大小的调整有明显的滞后 延迟 这是一个在很多应用程序中都会发生的问题 但我想知道是否有办法在 Qt 应用程序中使用QQuickView和
  • 无法添加 gms play 服务 9.0.1,google-services 插件需要 9.0.0

    我的顶级 build gradle 中有这个 buildscript repositories jcenter dependencies classpath com google gms google services 3 0 0 allp
  • 从现有组件中创建自定义 Swing 组件

    所以 我有这个 JTexrtArea 几乎可以完美满足我的需求 唯一的问题是行距 我无法设置它 为什么不使用 JTextPane 因为 JTextArea 中的间距可以更改 而且 JTextArea 比 JTextPane 轻得多 而且我的
  • Play!Framework 中的批量 HTTP 请求

    我已经实施了当前的一组路线 例如 GET api version entity my controllers GET api version entity id my controllers POST api version entity
  • 调用/创建委托

    今天是个好日子 我注意到有两种方法可以调用 创建委托 MrDel MyDelegate new MrDel Mathmetics Method or MrDel MyDelegate Mathmetics Method 所以我的问题是这两种
  • 根据背景图像颜色自动对比文本颜色

    我正在寻找一种方法 根据名为 横幅 的 div 中背景图像的主颜色 将文本颜色更改为 000 或 fff 每个页面上的背景图像都是随机选择的 因此我需要能够自动执行此操作 我碰到JavaScript 颜色对比器 https stackove
  • NoReverseMatch django - 不是有效的视图函数或模式

    目前使用 Django 1 11 我得到一个例外 Reverse for book details not found book details is not a valid view function or pattern name Re
  • 按因子分组并返回其他列的第二低值

    我想按中的值对该数据框进行分组zipcode列 并在另一个 称为比率 列中返回second lowest率或lowest率或max rate 例如 从这个 df zipcode state county code name rate are
  • TypeScript 对数组进行排序

    我一直在试图找出我在打字稿中遇到的一个非常奇怪的问题 它将内联布尔表达式视为第一个值的类型 而不是完整的表达式 因此 如果您尝试如下简单的操作 var numericArray Array
  • 派生的 Scala 案例类与基类具有相同的成员变量

    有更好的方法吗 scala gt case class A x Int defined class A scala gt case class B override val x Int y Int extends A x defined c
  • 如何仅解析特定对象而不反序列化整个 JSON 文件?

    我有一个巨大的 JSON 文件 数万个对象 gt 100 MB 文件 我正在尝试解析以提取特定对象 由于文件太大 我尝试仅反序列化我需要的特定部分 如果可能的话 而不必反序列化整个文件 应根据特定属性的值找到所述对象 arena id xx
  • 在 Android Studio 中搜索整个项目中出现的所有字符串

    我刚刚开始使用 Android Studio IntelliJ 现在我正在寻找该功能来查找项目中任何文件中字符串的出现情况 例如 我想找到所有包含字符串 的文件 getUuid 右上角的搜索没有给我正确的结果 并且我认为我无法在 编辑 gt
  • SQL CE 4 System.Transaction 支持

    有人问了类似的问题here https stackoverflow com questions 3401796 does sql ce 4 ctp support ambient transactions using system tran
  • Python 中的反向索引?

    我知道a 结束 开始 1 以相反的顺序对列表进行切片 例如 a range 20 print a 15 10 1 prints 15 11 print a 15 0 1 prints 15 1 但您无法到达第一个元素 示例中为 0 看来 1
  • 将 Eclipse 迁移到缺少 build.gradle 的 Android Studio

    正如许多人所建议的 我正在尝试从 Eclipse 切换到 Android Studio 遵循以下建议https developer android com sdk installing migrate html https develope
  • 如何在 VSIX 项目中的解决方案文件夹中获取项目

    您好 我在 Visual Studio 扩展内的自定义构建任务遇到问题 我需要识别我的自定义项目类型的项目 如果它们位于解决方案的根目录中 我可以很好地做到这一点 但是当它位于解决方案文件夹内时 就会出现问题 我可以将解决方案文件夹作为 E