使用DXCore控制台应用程序获取解决方案/项目中的文件列表

如何解决使用DXCore控制台应用程序获取解决方案/项目中的文件列表

|| 据我了解,在插件中使用以下代码片段可以提取VS解决方案信息。
EnvDTE.Solution solution = CodeRush.ApplicationObject.Solution;
EnvDTE.Projects projects = solution.Projects;
问:我想构建一个控制台应用程序并访问这些文件详细信息。我的目的是创建一个控制台应用程序(可以在不使用VS的情况下运行)以根据我在输入.sln文件中发现的设计问题生成报告。我为此使用什么功能?     

解决方法

        原始(和更新的)帖子位于此处。 实际上,DXCore并不是为在Visual Studio之外使用而设计的,但是总有变通方法...在本文中,我将向您展示如何在常规C#控制台应用程序中使用DXCore框架来解析整个解决方案并使用抽象的解析树。解决方案应作为程序的参数传入* .sln文件的完整完整路径。如果不使用任何参数,则使用测试程序的硬编码路径,因此程序将自行解析并打印有关解决方案的信息,例如使用的所有类型的列表以及每个内部成员的数量类。 让我们创建一个新的C#控制台应用程序,将其命名为TestDXCoreConsoleApp并将其保存在\“ C:\\ Project \”文件夹中: 然后,我们应该将新项目的Target Framework版本更改为Framework 4.0,因此它不是“ Target Framework 4.0 Client Profile \”,因为某些必需的程序集引用不支持此版本的Target Framework。 : 现在,让我们添加所需的程序集引用。这是我们需要的清单: 1)DXCore组件: DevExpress.CodeRush.Common DevExpress.CodeRush.Core DevExpress.CodeRush.StructuralParser DevExpress.CodeRush.VSCore DevExpress.DXCore.AssemblyResolver DevExpress.DXCore.Parser 这些程序集可以在DevExpress IDE Tools安装文件夹中找到。例如,路径可能如下所示: C:\\ Program Files \\ DevExpress 2011.1 \\ IDETools \\ System \\ DXCore \\ BIN 2)现在,针对不同程序语言支持的三个附加程序集: DX_CPPL语言 DX_CSharpLanguage DX_VB语言 使用这些程序集,我们可以解析CSharp,Visual Basic和C ++项目。它们可以在这里找到: C:\\ Program Files(x86)\\ DevExpress 2011.1 \\ IDETools \\ System \\ DXCore \\ BIN \\ SYSTEM 3).NET Framework程序集: Microsoft.Build.BuildEngine.dll 4)最后,还有几个Visual Studio程序集: 环境技术 VsLangProj 这两个可以在\“ PublicAssemblies \”文件夹中找到: C:\\ Program Files(x86)\\ Microsoft Visual Studio 10.0 \\ Common7 \\ IDE \\ PublicAssemblies \\ 现在,DXCore支持代码。加载解决方案,其项目和初始化DXCore解析器需要此代码。我添加了两个文件夹: 1)Helpers文件夹包含以下类: LanguageHelper.cs-检测项目的语言(例如CSharp,Visual Basic或C ++)。 ParserHelper.cs-初始化DXCore解析器,以及一些重要的DXCore服务-用于解析源代码的Source Model服务和Language服务。 SolutionParser.cs-一个帮助程序类,它采用您要解析的解决方案的路径。调用GetParsedSolution方法将返回SolutionElement,其中包含整个解决方案的抽象源树。 2)Loaders文件夹包含Visual Studio项目和针对不同Visual Studio版本的解决方案加载器。它们用于解析* .XXproj和* .sln文件。有VS2002,VS2003和VS2005的版本。没有专用于VS2008和VS2010的加载器,因为用于旧VS版本的那些加载器非常适合读取和加载新的Visual Studio项目和解决方案格式文件(例如2008、2010)。 这是TestDXCoreConsoleApp的最终结构: 带有完整源代码的TestDXCoreConsoleApp在这里(267,457字节,C#,VS2010),因此您可以查看代码并根据需要使用它。这是Program类的主要功能:
static void Main(string[] args)
{
  string SolutionPath;
  if (args != null && args.Length > 0)
    SolutionPath = args[0];
  else
    SolutionPath = @\"c:\\Projects\\TestDXCoreConsoleApp\\TestDXCoreConsoleApp.sln\";

  try
  {
    ParserHelper.RegisterParserServices();

    Console.Write(\"Parsing solution... \");

    SolutionParser solutionParser = new SolutionParser(SolutionPath);
    SolutionElement solution = solutionParser.GetParsedSolution();
    if (solution == null)
      return;

    Console.WriteLine(\"Done.\");

    foreach (ProjectElement project in solution.AllProjects)
      foreach (SourceFile file in project.AllFiles)
        foreach (TypeDeclaration type in file.AllTypes)
        {
          Console.Write(type.FullName);
          Console.WriteLine(\",members: \" + ((ITypeElement)type).Members.Count);
        }
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.Message);
  }
  finally
  {
    ParserHelper.UnRegisterParserServices();
  }

  Console.ReadLine();
}
如果将源放入\“ C:\\ Projects \”文件夹中,并且在不指定任何参数的情况下运行该程序,则应看到以下结果: 按Enter键关闭窗口。请记住,解析过程可能需要一些时间,因此您可能需要等待几秒钟,直到解析整个解决方案为止。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-