@@ -143,12 +143,12 @@ type internal FSharpProjectOptionsManager
143143 }
144144
145145 /// Update the info for a project in the project table
146- member this.UpdateProjectInfo ( tryGetOrCreateProjectId , projectId , site , userOpName ) =
146+ member this.UpdateProjectInfo ( tryGetOrCreateProjectId , projectId , site , userOpName , invalidateConfig ) =
147147 projectOptionsTable.AddOrUpdateProject( projectId, ( fun isRefresh ->
148148 let extraProjectInfo = Some( box workspace)
149149 let tryGetOptionsForReferencedProject f = f |> tryGetOrCreateProjectId |> Option.bind this.TryGetOptionsForProject |> Option.map( fun ( _ , _ , projectOptions ) -> projectOptions)
150150 let referencedProjects , projectOptions = ProjectSitesAndFiles.GetProjectOptionsForProjectSite( Settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, tryGetOptionsForReferencedProject, site, serviceProvider, ( tryGetOrCreateProjectId ( site.ProjectFileName)), site.ProjectFileName, extraProjectInfo, Some projectOptionsTable, true )
151- checkerProvider.Checker.InvalidateConfiguration( projectOptions, startBackgroundCompileIfAlreadySeen = not isRefresh, userOpName = userOpName + " .UpdateProjectInfo" )
151+ if invalidateConfig then checkerProvider.Checker.InvalidateConfiguration( projectOptions, startBackgroundCompileIfAlreadySeen = not isRefresh, userOpName = userOpName + " .UpdateProjectInfo" )
152152 let referencedProjectIds = referencedProjects |> Array.choose tryGetOrCreateProjectId
153153 let parsingOptions , _ = checkerProvider.Checker.GetParsingOptionsFromProjectOptions( projectOptions)
154154 referencedProjectIds, parsingOptions, Some site, projectOptions))
@@ -205,7 +205,7 @@ type internal FSharpProjectOptionsManager
205205 member this.ProvideProjectSiteProvider ( project : Project ) = provideProjectSiteProvider( workspace, project, serviceProvider, Some projectOptionsTable)
206206
207207 /// Tell the checker to update the project info for the specified project id
208- member this.UpdateProjectInfoWithProjectId ( projectId : ProjectId , userOpName ) =
208+ member this.UpdateProjectInfoWithProjectId ( projectId : ProjectId , userOpName , invalidateConfig ) =
209209 let hier = workspace.GetHierarchy( projectId)
210210 match hier with
211211 | null -> ()
@@ -215,13 +215,13 @@ type internal FSharpProjectOptionsManager
215215 let siteProvider = this.ProvideProjectSiteProvider( project)
216216 let projectSite = siteProvider.GetProjectSite()
217217 if projectSite.CompilationSourceFiles.Length <> 0 then
218- this.UpdateProjectInfo( tryGetOrCreateProjectId, projectId, projectSite, userOpName)
218+ this.UpdateProjectInfo( tryGetOrCreateProjectId, projectId, projectSite, userOpName, invalidateConfig )
219219 | _ -> ()
220220
221221 /// Tell the checker to update the project info for the specified project id
222- member this.UpdateDocumenttInfoWithProjectId ( projectId : ProjectId , documentId : DocumentId , userOpName ) =
222+ member this.UpdateDocumentInfoWithProjectId ( projectId : ProjectId , documentId : DocumentId , userOpName , invalidateConfig ) =
223223 if workspace.IsDocumentOpen( documentId) then
224- this.UpdateProjectInfoWithProjectId( projectId, userOpName)
224+ this.UpdateProjectInfoWithProjectId( projectId, userOpName, invalidateConfig )
225225
226226 [<Export>]
227227 /// This handles commandline change notifications from the Dotnet Project-system
@@ -233,7 +233,7 @@ type internal FSharpProjectOptionsManager
233233 let referencePaths = references |> Seq.map( fun r -> fullPath r.Reference) |> Seq.toArray
234234 let projectId = workspace.ProjectTracker.GetOrCreateProjectIdForPath( path, projectDisplayNameOf path)
235235 projectOptionsTable.SetOptionsWithProjectId( projectId, sourcePaths, referencePaths, options.ToArray())
236- this.UpdateProjectInfoWithProjectId( projectId, " HandleCommandLineChanges" )
236+ this.UpdateProjectInfoWithProjectId( projectId, " HandleCommandLineChanges" , invalidateConfig = true )
237237
238238 member __.Checker = checkerProvider.Checker
239239
@@ -341,11 +341,11 @@ type
341341
342342 let optionsAssociation = ConditionalWeakTable< IWorkspaceProjectContext, string[]>()
343343
344- member private this.OnProjectAdded ( projectId : ProjectId ) = projectInfoManager.UpdateProjectInfoWithProjectId( projectId, " OnProjectAdded" )
345- member private this.OnProjectReloaded ( projectId : ProjectId ) = projectInfoManager.UpdateProjectInfoWithProjectId( projectId, " OnProjectReloaded" )
346- member private this.OnDocumentAdded ( projectId : ProjectId , documentId : DocumentId ) = projectInfoManager.UpdateDocumenttInfoWithProjectId ( projectId, documentId, " OnDocumentAdded" )
347- member private this.OnDocumentChanged ( projectId : ProjectId , documentId : DocumentId ) = projectInfoManager.UpdateDocumenttInfoWithProjectId ( projectId, documentId, " OnDocumentChanged" )
348- member private this.OnDocumentReloaded ( projectId : ProjectId , documentId : DocumentId ) = projectInfoManager.UpdateDocumenttInfoWithProjectId ( projectId, documentId, " OnDocumentReloaded" )
344+ member private this.OnProjectAdded ( projectId : ProjectId ) = projectInfoManager.UpdateProjectInfoWithProjectId( projectId, " OnProjectAdded" , invalidateConfig = true )
345+ member private this.OnProjectReloaded ( projectId : ProjectId ) = projectInfoManager.UpdateProjectInfoWithProjectId( projectId, " OnProjectReloaded" , invalidateConfig = true )
346+ member private this.OnDocumentAdded ( projectId : ProjectId , documentId : DocumentId ) = projectInfoManager.UpdateDocumentInfoWithProjectId ( projectId, documentId, " OnDocumentAdded" , invalidateConfig = true )
347+ member private this.OnDocumentChanged ( projectId : ProjectId , documentId : DocumentId ) = projectInfoManager.UpdateDocumentInfoWithProjectId ( projectId, documentId, " OnDocumentChanged" , invalidateConfig = false )
348+ member private this.OnDocumentReloaded ( projectId : ProjectId , documentId : DocumentId ) = projectInfoManager.UpdateDocumentInfoWithProjectId ( projectId, documentId, " OnDocumentReloaded" , invalidateConfig = true )
349349
350350 override this.Initialize () =
351351 base .Initialize()
473473
474474 // update the cached options
475475 if updated then
476- projectInfoManager.UpdateProjectInfo( tryGetOrCreateProjectId workspace, project.Id, site, userOpName + " .SyncProject" )
476+ projectInfoManager.UpdateProjectInfo( tryGetOrCreateProjectId workspace, project.Id, site, userOpName + " .SyncProject" , invalidateConfig = true )
477477
478478 member this.SetupProjectFile ( siteProvider : IProvideProjectSite , workspace : VisualStudioWorkspaceImpl , userOpName ) =
479479 let userOpName = userOpName + " .SetupProjectFile"
583583 let fileContents = VsTextLines.GetFileContents( textLines, textViewAdapter)
584584 this.SetupStandAloneFile( filename, fileContents, this.Workspace, hier)
585585 | id ->
586- projectInfoManager.UpdateProjectInfoWithProjectId( id.ProjectId, " SetupNewTextView" )
586+ projectInfoManager.UpdateProjectInfoWithProjectId( id.ProjectId, " SetupNewTextView" , invalidateConfig = true )
587587 | _ ->
588588 let fileContents = VsTextLines.GetFileContents( textLines, textViewAdapter)
589589 this.SetupStandAloneFile( filename, fileContents, this.Workspace, hier)
0 commit comments