Fully update CompilationOptions when project files change. #1774
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When
.csproj
files change, o# gets fully updatedCSharpCompilationOptions
from MSBuild, but it doesn't apply them to the workspace. Because of this, o# completely ignores changes toAllowUnsafeCode
,Nullable
,DefineConstants
,LangVersion
etc. after the initial project load.Fortunately, o# was updating
CSharpCompilationOptions
already, for the purpose of updating analyzer rulesets. So fix amounted to passingprojectFileInfo.CreateCompilationOptions()
instead of
project.CompilationOptions.WithSpecificDiagnosticOptions(projectFileInfo.GetDiagnosticOptions())
Problem with the old code was that
project.CompilationOptions
was essentially old compiler options.ProjectFileInfo
is fresh data, and with this PR the whole CompilerOptions object will be fresh, not just the DiagnosticsOptions part.