使用定义的自定义符号(例如:"DEBUG")执行 Roslyn 条件编译

Perform Roslyn conditional compilation with custom symbol (eg: "DEBUG") defined

我正在使用 Roslyn 编译一个项目,代码类似于:

var workspace = MSBuildWorkspace.Create();
var project = await workspace.OpenProjectAsync("SomeProject.csproj");
var compilation = await project.GetCompilationAsync();

我需要设置一个编译符号(例如 DEBUGTRACE,但在我的情况下完全是自定义的)。如何使用 API?

执行此操作

我看到 project 有一个 CompilationOptions 属性,但我在那里没有看到任何相关内容。


编辑感谢@JoshVarty,他指出在编译之前添加这样的代码:

project = project
    .WithParseOptions(((CSharpParseOptions)project.ParseOptions)
    .WithPreprocessorSymbols("SOME_SYMBOL"));

我想你正在寻找 Project.WithParseOptions() and WithPreprocessorSymbols()