Sha*_*aun 4 c# plugins coderush dxcore
据我所知,以下片段可用于在插件中使用时提取VS解决方案信息.
EnvDTE.Solution solution = CodeRush.ApplicationObject.Solution;
EnvDTE.Projects projects = solution.Projects;
Run Code Online (Sandbox Code Playgroud)
问:我想构建一个控制台应用程序并访问这些文件详细信息.我的目标是创建一个控制台应用程序(可以在没有VS的情况下运行),以根据我在输入.sln文件中找到的设计问题生成报告.我用它做什么功能?
原始(和更新)帖子位于此处.
实际上,DXCore并不是设计用于Visual Studio之外的,但总有一些解决方法......在本文中,我将向您展示如何在常规C#控制台应用程序中使用DXCore Framework来解析整个解决方案,使用抽象解析树.解决方案应该作为参数传递给程序,作为*.sln文件的完整路径.如果没有使用参数,则使用测试程序的硬编码路径,因此程序将自行解析并打印有关解决方案的信息,例如所使用的所有类型的列表以及每个类内部的成员数.
让我们创建一个新的C#控制台应用程序,将其命名为TestDXCoreConsoleApp并将其保存在"C:\ Project"文件夹中:
然后,我们应该将新项目的Target Framework版本更改为Framework 4.0,因此它不是"Target Framework 4.0 Client Profile",因为一些必需的程序集引用不支持此版本的Target Framework:
现在,添加必需的程序集引用.这是我们需要的清单:
1)DXCore组件:
这些程序集可以在DevExpress IDE Tools安装文件夹中找到.例如,路径可能如下所示:
C:\ Program Files\DevExpress 2011.1\IDETools\System\DXCore\BIN
2)现在,三个额外的程序集支持不同的程序语言:
通过这些程序集,我们可以解析CSharp,Visual Basic和C++项目.他们可以在这里找到:
C:\ Program Files(x86)\ DevExpress 2011.1\IDETools\System\DXCore\BIN\SYSTEM
3).NET Framework程序集:
4)最后,有几个Visual Studio程序集:
这两个可以在"PublicAssemblies"文件夹中找到:
C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies \
现在,DXCore支持代码.加载解决方案,项目和初始化DXCore解析器需要此代码.我添加了两个文件夹:
1)Helpers文件夹包含以下类:
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类的Main函数:
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();
}
Run Code Online (Sandbox Code Playgroud)
如果将源放入"C:\ Projects"文件夹并运行没有指定任何参数的程序,您应该看到以下结果:
按Enter键关闭窗口.请记住,解析过程可能需要一些时间,因此您可能需要等待几秒钟,直到解析整个解决方案.
归档时间: |
|
查看次数: |
1677 次 |
最近记录: |