c# - Roslyn 是否真的允许您为 CSharp 项目操纵 TreatWarningsAsErrors?

标签 c# msbuild compiler-warnings roslyn

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

我想要完成的是从项目文件中获取设置,并将其设置为 true(如果尚未设置)。接下来,我想让 Roslyn 使用新设置进行编译,这样我就可以检查这是否会破坏项目。

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

CompilationOptions包含所有build设置,例如警告级别等。但是 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;

最佳答案

你在找

compilationOptions.WithGeneralDiagnosticOption(ReportDiagnostic.Error)

Source

关于c# - Roslyn 是否真的允许您为 CSharp 项目操纵 TreatWarningsAsErrors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30458213/

相关文章:

c# - StructureMap 移除单个实例

c# - Roslyn 分析器仅针对打开的文件运行

c++ - 根据编译器版本有条件地包含源文件?

c - 避免在 printf 周围的包装器中发出警告

c# - 类型 'X' 在类型 'Y.Z' 中不存在

c# - .GetAwaiter() 和 ConfigureAwait() 的区别

msbuild - dotnet publish、contentFiles 和可传递的 nuget 依赖项

tfs - 无法访问 MSBuild 中的 ArtifactStagingDirectory 变量

Dart : How to ignore omit_local_variable_types warning?

c - 为什么 GCC 不在此示例中发出警告