Roslyn实际上允许您为CSharp项目操作TreatWarningsAsErrors吗?

本文关键字:操作 TreatWarningsAsErrors 项目 CSharp 实际上 许您 Roslyn | 更新日期: 2023-09-27 17:50:44

我试图检索设置TreatWarningsAsErrors,但我无法为我加载的解决方案的项目找到它。

我想要完成的是,从项目文件中获取设置,并将其设置为true,如果还没有的话。接下来,我想让Roslyn用新设置做一个编译,这样我就可以检查这是否会破坏项目。

我看过很多地方,其中包括Project.CompilationOptions。项目构建的大多数选项都在那里,除了这个。

CompilationOptions包含所有构建设置,如警告级别等。但是TreatWarningsAsErrors不在那里。我看错地方了吗?

我打开解决方案的方式类似于FormatSolution sample:

var solutionFile = @"C:'ties'src'playground'EnforceTreatAllWarningsAsErrors'EnforceTreatAllWarningsAsErrors.sln";
var workspace = MSBuildWorkspace.Create();
var solution = workspace.OpenSolutionAsync(solutionFile).Result;
var project = solution.Projects.Single();
// warning level is there
var warningLevel = project.CompilationOptions.WarningLevel;
// treat warnings as errors is not there... The following doesn't compile :(
bool treatWarningsAsErrors = project.CompilationOptions.TreatWarningsAsErrors;

Roslyn实际上允许您为CSharp项目操作TreatWarningsAsErrors吗?

你要找的是

compilationOptions.WithGeneralDiagnosticOption(ReportDiagnostic.Error)