标签: nrefactory

使用NRefactory 5完成C#代码完成

我刚刚发现了NRefactory 5,我猜,这是我目前问题的最合适的解决方案.目前我正在开发一个小C#脚本应用程序,我想提供代码完成.直到最近,我才使用微软的"Roslyn"项目完成了这项工作.但是由于该项目的最新更新需要.Net Framework 4.5,我不能再使用它,因为我希望该应用程序也可以在Win XP下运行.所以我必须在这里切换到另一种技术.

我的问题不是汇编的东西.这可以通过.Net CodeDomProvider进行更多的努力来完成.问题在于代码完成的东西.据我所知,NRefactory 5提供了提供代码完成所需的一切(解析器,类型系统等),但我无法弄清楚如何使用它.我看了一下SharpDevelop源代码,但他们没有使用NRefactory 5来完成代码,他们只将它用作反编译器.因为我找不到一个关于如何在网络中使用它来完成代码的示例,我认为我可能会在这里找到一些帮助.

情况如下.我有一个包含脚本代码的文件.实际上它甚至不是一个文件,而是一个从编辑器控件中得到的字符串(顺便说一句:我正在使用AvalonEdit.伟大的编辑器!)和一些需要引用的程序集.因此,没有解决方案文件,没有项目文件等只是一串源代码和程序集.

我已经看了NRefactory 5附带的Demo和关于代码项目的文章,并得到了类似这样的东西:

var unresolvedTypeSystem = syntaxTree.ToTypeSystem();

IProjectContent pc = new CSharpProjectContent();

// Add parsed files to the type system
pc = pc.AddOrUpdateFiles(unresolvedTypeSystem);

// Add referenced assemblies:
pc = pc.AddAssemblyReferences(new CecilLoader().LoadAssemblyFile(
    System.Reflection.Assembly.GetAssembly(typeof(Object)).Location));
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道如何继续下去.我甚至不确定这是否是实现目标的正确方法.如何使用CSharpCompletionEngine?还需要什么?等等.你看到目前还有许多不太清楚的事情,我希望你能为此带来一些启示.

非常感谢大家!

c# code-completion nrefactory

7
推荐指数
2
解决办法
4249
查看次数

从.Net程序集中获取AST,无需源代码(IL代码)

我想分析.Net程序集与C#,VB.NET或其他任何语言无关.
我知道Roslyn和NRefactory,但他们似乎只在C#源代码级别上工作?CodePlex上
还有" 通用编译器基础设施:代码模型和AST API "项目,该项目声称"支持一种表示与语言无关的结构化形式的代码块的分层对象模型",它完全符合我的要求.
但是,我无法找到任何有用的文档或实际执行此操作的代码.
有什么建议如何存档?
Mono.Cecil可以做点什么吗?

il abstract-syntax-tree mono.cecil roslyn nrefactory

5
推荐指数
1
解决办法
1363
查看次数

Mono Cecil和NRefactory之间的关系是什么?如何将它们与Roslyn进行比较?

据我所知,微软的Compiler as a Service或Roslyn项目的灵感来自Mono Cecil.

但是Mono Cecil和NRefactory之间的关系是什么?一个人用另一个吗?或者他们是做同样事情的替代技术?

看起来它们都提供了相同的代码分析服务,就像Roslyn一样.

c# mono.cecil compiler-as-a-service roslyn nrefactory

4
推荐指数
1
解决办法
1494
查看次数