2
我想检索设置TreatWarningsAsErrors,但我无法找到它为我加载的解决方案的项目。Roslyn是否真的允许您为CSharp项目操作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;
谢谢!我不知道我是怎么错过了...现在,能够改变选项,我发现不支持保存:我得到['NotSupportedException'](http:///source.roslyn.io/#Microsoft.CodeAnalysis.Workspaces/Workspace/Workspace.cs#909),当保存解决方案文件('workspace.TryApplyChanges(...)')时,就像['FormatSolution']( https://github.com/dotnet/roslyn/blob/master/src/Samples/CSharp/FormatSolution/Program.cs)示例 – Ties
它看起来像MSBuildWorkspace不是很好,http://source.roslyn .io /#Microsoft.CodeAnalysis.Workspaces.Desktop/Workspace/MSBuild/MSBuildWorkspace.cs,904这很有意义,特别是因为它们可能位于条件'中'。您可以直接编辑MSBuild XML,或者在GitHub上提交功能请求 –
SLaks
是的,的确如此,我现在要做的是,我只是希望利用Roslyn来做到这一点,因为我已经在使用它来测试项目是否成功丁,之前和之后;) – Ties