C# 如何执行基于C代码反射的逻辑的VS扩展?

C# 如何执行基于C代码反射的逻辑的VS扩展?,c#,reflection,code-analysis,visual-studio-extensions,vs-extensibility,C#,Reflection,Code Analysis,Visual Studio Extensions,Vs Extensibility,我突然想到,我想写一个VisualStudio扩展,根据要在文件上的代码上执行的某些逻辑,将特定注释添加到当前打开的文件中。我以前从未开发过扩展,所以到目前为止,我遇到了一些挑战,但这是我最关心的问题 到目前为止,我已经尝试使用反射从文件中编译代码,然后处理结果以生成我想要的注释。类似于 CompilerParameters parameters = new CompilerParameters() { GenerateExecutable = false, GenerateIn

我突然想到,我想写一个VisualStudio扩展,根据要在文件上的代码上执行的某些逻辑,将特定注释添加到当前打开的文件中。我以前从未开发过扩展,所以到目前为止,我遇到了一些挑战,但这是我最关心的问题

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

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(微软的代码分析库),但实际上我需要从文件的源代码中获得一些面向对象的详细信息,我认为这样做是不可能的

最后,我希望能够迭代另一个特定类的子类,获取具有某些特定属性的方法,并在这些方法的基础上添加一些注释来扩充文件


你会怎么做呢?是否有任何开源扩展可以执行类似的操作,我可以将其用作参考

Roslyn绝对是一条路,你可以忘记其他方法(除非你使用的是低于2015年的旧Visual Studio)。基本上,VisualStudio/Roslyn已经为您解析了树。你可以在“roslyn visual studio扩展教程”上用谷歌搜索。我建议使用微软的Mads Kristensen编写的大量开源扩展:。我在这里写了一个简单的例子:它也是免费开放的,谢谢@SimonMourier!我会检查一下,当我有什么要报告的时候回来。你检查了吗,如果问题仍然存在,请随时告诉我们。Roslyn绝对是一条路,你可以忘记其他方法(除非你使用的是旧的Visual Studio,低于2015)。基本上,VisualStudio/Roslyn已经为您解析了树。你可以在“roslyn visual studio扩展教程”上用谷歌搜索。我建议使用微软的Mads Kristensen编写的大量开源扩展:。我在这里写了一个简单的例子:它也是免费开放的,谢谢@SimonMourier!我会检查出来,当我有什么要报告的时候回来。你检查了吗?如果问题仍然存在,请随时告诉我们。