C 中分析仪的内省分析
- 创建新的控制台应用程序
- 添加 NuGet 包
Microsoft.CodeAnalysis
- 导入命名空间
Microsoft.CodeAnalysis.MSBuild
,System.Linq
和Microsoft.CodeAnalysis.CSharp.Syntax
- 在
Main
方法中编写以下示例代码:
// Declaring a variable with the current project file path.
const string projectPath = @"C:\<your path to the project\<project file name>.csproj";
// Creating a build workspace.
var workspace = MSBuildWorkspace.Create();
// Opening this project.
var project = workspace.OpenProjectAsync(projectPath).Result;
// Getting the compilation.
var compilation = project.GetCompilationAsync().Result;
// As this is a simple single file program, the first syntax tree will be the current file.
var syntaxTree = compilation.SyntaxTrees.First();
// Getting the root node of the file.
var rootSyntaxNode = syntaxTree.GetRootAsync().Result;
// Finding all the local variable declarations in this file and picking the first one.
var firstLocalVariablesDeclaration = rootSyntaxNode.DescendantNodesAndSelf().OfType<LocalDeclarationStatementSyntax>().First();
// Getting the first declared variable in the declaration syntax.
var firstVariable = firstLocalVariablesDeclaration.Declaration.Variables.First();
// Getting the text of the initialized value.
var variableInitializer = firstVariable.Initializer.Value.GetFirstToken().ValueText;
// This will print to screen the value assigned to the projectPath variable.
Console.WriteLine(variableInitializer);
Console.ReadKey();
运行项目时,你将看到在顶部声明的变量打印到屏幕上。这意味着你成功地自我分析了一个项目并在其中找到了一个变量。