0
我搜索了很长时间,但没有发现任何具体的事情。运行时访问/在EnvDTE文档中查找所有变量(Visual Studio/C#/ Extension)
我为Visual Studio编写了扩展,并希望在打开的项目中查找ActiveDocument/Code文档中的所有变量/属性。有没有一种“简单”的方式来获取它们,或者我需要自己搜索它们吗?
编辑: 我想收集有关打开的文档中的变量的信息。首先,我想创建一个列表,我将其绑定到一个ListBox,用户可以在其中看到所有使用的变量(和方法参数 - 只需使用以下语法“Type VarName”)。稍后,我将给出翻译这些变量并编辑文档以改变为新语言的功能。
我希望我对自己的话题有足够的了解。
EDIT2: 标记科尔武 - MSFT的答案,解决方案和张贴了我对科尔武碱溶液 - MSFT的答案。
public void FindVariablesInDoc(EnvDTE.TextDocument haystackDoc) {
var objEditPt = haystackDoc.StartPoint.CreateEditPoint();
var tree = CSharpSyntaxTree.ParseText(objEditPt.GetText(haystackDoc.EndPoint));
var Mscorlib = MetadataReference.CreateFromFile(typeof(object).Assembly.Location);
var compilation = CSharpCompilation.Create("MyCompilation", syntaxTrees: new[] { tree }, references: new[] { Mscorlib });
var model = compilation.GetSemanticModel(tree);
var variables = tree.GetRoot().DescendantNodes().Where(v => v is FieldDeclarationSyntax || v is LocalDeclarationStatementSyntax || v is PropertyDeclarationSyntax || v is ParameterSyntax);
}
我需要重新安装VS15并将一些程序集放到GAC中以实现roslyn。它似乎做我想要的,但我不知道如何从你共享的代码中获取关于变量的信息。 (顺便说一下,谢谢!)我会将我的问题更改为更具体。 –
我与Nuget Packages打了很长时间,因为我的项目没有使用最新版本的Microsoft.CodeAnalysis(目前2.2.0)。 –