@@ -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 ->
148148let extraProjectInfo = Some( box workspace)
149149let tryGetOptionsForReferencedProject f = f|> tryGetOrCreateProjectId|> Option.bind this.TryGetOptionsForProject|> Option.map( fun ( _ , _ , projectOptions ) -> projectOptions)
150150let 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" )
152152let referencedProjectIds = referencedProjects|> Array.choose tryGetOrCreateProjectId
153153let parsingOptions , _ = checkerProvider.Checker.GetParsingOptionsFromProjectOptions( projectOptions)
154154 referencedProjectIds, parsingOptions, Some site, projectOptions))
@@ -205,7 +205,7 @@ type internal FSharpProjectOptionsManager
205205member 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 ) =
209209let hier = workspace.GetHierarchy( projectId)
210210match hierwith
211211| null -> ()
@@ -215,13 +215,13 @@ type internal FSharpProjectOptionsManager
215215let siteProvider = this.ProvideProjectSiteProvider( project)
216216let projectSite = siteProvider.GetProjectSite()
217217if 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 ) =
223223if 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
233233let referencePaths = references|> Seq.map( fun r -> fullPath r.Reference) |> Seq.toArray
234234let 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
238238member __.Checker = checkerProvider.Checker
239239
@@ -341,11 +341,11 @@ type
341341
342342let 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
350350override this.Initialize () =
351351base .Initialize()
473473
474474// update the cached options
475475if updatedthen
476- projectInfoManager.UpdateProjectInfo( tryGetOrCreateProjectId workspace, project.Id, site, userOpName+ " .SyncProject" )
476+ projectInfoManager.UpdateProjectInfo( tryGetOrCreateProjectId workspace, project.Id, site, userOpName+ " .SyncProject" , invalidateConfig = true )
477477
478478member this.SetupProjectFile ( siteProvider : IProvideProjectSite , workspace : VisualStudioWorkspaceImpl , userOpName ) =
479479let userOpName = userOpName+ " .SetupProjectFile"
583583let 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| _ ->
588588let fileContents = VsTextLines.GetFileContents( textLines, textViewAdapter)
589589 this.SetupStandAloneFile( filename, fileContents, this.Workspace, hier)