如何使用基于C#代码反射执行逻辑的VS Extension?

时间:2017-06-06 01:27:30

标签: c# reflection code-analysis visual-studio-extensions vs-extensibility

我想写一个Visual Studio扩展,根据要对文件代码执行的一些逻辑,将特定注释添加到我当前打开的文件中。我之前从未开发过扩展程序,所以到目前为止我已经面临过一些挑战,但那是我最关心的问题。

到目前为止,我已尝试使用反射从文件中编译代码,然后处理结果以生成我想要的注释。有些东西......

CompilerParameters parameters = new CompilerParameters()
{
    GenerateExecutable = false,
    GenerateInMemory = true,
};

var provider = new CSharpCodeProvider();
CompilerResults results = provider.CompileAssemblyFromSource(parameters, source);

if (results.Errors.HasErrors)
{
    return;
}

var assembly = results.CompiledAssembly;
var types = assembly.GetTypes();

// ... Examine types and do the rest of the logic

当文件过于简单时,这样可以正常工作,但如果它有任何依赖关系,编译将失败,因为它无法从using语句中找到引用,这对我来说非常有意义,但是不要我知道如何解决它。

我试图放弃这种方法并使用Roslyn(微软的CodeAnalysis库,https://github.com/dotnet/roslyn)代替,但实际上我需要一些面向对象的详细信息来自文件的源代码我不会# 39;我想我会有这样的方式。

在一天结束时,我希望能够迭代属于另一个特定类的子类的类,获取具有某些特定属性的方法,并在这些方法之上添加一些注释来扩充文件。

你会怎么做?是否有任何开源扩展程序执行类似我可以用作参考的东西?

0 个答案:

没有答案