Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit722ebc1

Browse files
TIHanbrettfo
authored andcommitted
Updated roslyn package. Using IWorkspaceProjectContext.Id.
1 parent7b9e2d9 commit722ebc1

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

‎vsintegration/src/FSharp.Editor/LanguageService/LanguageService.fs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ type internal FSharpLanguageService(package : FSharpPackage, solution: IVsSoluti
206206
letprojectDisplayName= projectDisplayNameOf projectFileName
207207
Some(workspace.ProjectTracker.GetOrCreateProjectIdForPath(projectFileName, projectDisplayName))
208208

209-
let_legacyProjectWorkspaceMap=new LegacyProjectWorkspaceMap(package.ComponentModel.GetService<VisualStudioWorkspaceImpl>(),solution, projectInfoManager, package.ComponentModel.GetService<IWorkspaceProjectContextFactory>())
209+
let_legacyProjectWorkspaceMap=new LegacyProjectWorkspaceMap(solution, projectInfoManager, package.ComponentModel.GetService<IWorkspaceProjectContextFactory>())
210210

211211
overridethis.Initialize()=
212212
base.Initialize()

‎vsintegration/src/FSharp.Editor/LanguageService/LegacyProjectWorkspaceMap.fs‎

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ open Microsoft.VisualStudio.LanguageServices.ProjectSystem
2020
openMicrosoft.VisualStudio.Shell.Interop
2121

2222
[<Sealed>]
23-
typeinternalLegacyProjectWorkspaceMap(workspace: VisualStudioWorkspaceImpl,
24-
solution: IVsSolution,
23+
typeinternalLegacyProjectWorkspaceMap(solution: IVsSolution,
2524
projectInfoManager: FSharpProjectOptionsManager,
2625
projectContextFactory: IWorkspaceProjectContextFactory)as this=
2726

2827
letinvalidPathChars= set(Path.GetInvalidPathChars())
2928
letoptionsAssociation= ConditionalWeakTable<IWorkspaceProjectContext, string[]>()
3029
letisPathWellFormed(path:string)=not(String.IsNullOrWhiteSpace path)&& path|> Seq.forall(fun c->not(Set.contains c invalidPathChars))
3130

31+
letlegacyProjectIdLookup= ConcurrentDictionary()
3232
letlegacyProjectLookup= ConcurrentDictionary()
3333
letsetupQueue= ConcurrentQueue()
3434

@@ -37,10 +37,12 @@ type internal LegacyProjectWorkspaceMap(workspace: VisualStudioWorkspaceImpl,
3737

3838
/// Sync the Roslyn information for the project held in 'projectContext' to match the information given by 'site'.
3939
/// Also sync the info in ProjectInfoManager if necessary.
40-
memberthis.SyncLegacyProject(projectId:ProjectId,projectContext:IWorkspaceProjectContext,site:IProjectSite)=
40+
memberthis.SyncLegacyProject(projectContext:IWorkspaceProjectContext,site:IProjectSite)=
4141
letwellFormedFilePathSetIgnoreCase(paths:seq<string>)=
4242
HashSet(paths|> Seq.filter isPathWellFormed|> Seq.map(fun s->try Path.GetFullPath(s)with_-> s), StringComparer.OrdinalIgnoreCase)
4343

44+
letprojectId= projectContext.Id
45+
4446
// Sync the source files in projectContext. Note that these source files are __not__ maintained in order in projectContext
4547
// as edits are made. It seems this is ok because the source file list is only used to drive roslyn per-file checking.
4648
letupdatedFiles= site.CompilationSourceFiles|> wellFormedFilePathSetIgnoreCase
@@ -94,7 +96,7 @@ type internal LegacyProjectWorkspaceMap(workspace: VisualStudioWorkspaceImpl,
9496
letinfo=(updatedFiles, updatedRefs)
9597
legacyProjectLookup.AddOrUpdate(projectId, info,fun _ _-> info)|> ignore
9698

97-
memberthis.SetupLegacyProjectFile(siteProvider:IProvideProjectSite,workspace:VisualStudioWorkspaceImpl)=
99+
memberthis.SetupLegacyProjectFile(siteProvider:IProvideProjectSite)=
98100
let recsetup(site:IProjectSite)=
99101
letprojectGuid= Guid(site.ProjectGuid)
100102
letprojectFileName= site.ProjectFileName
@@ -118,21 +120,21 @@ type internal LegacyProjectWorkspaceMap(workspace: VisualStudioWorkspaceImpl,
118120
projectGuid,
119121
hierarchy,
120122
Option.toObj site.CompilationBinOutputPath)
121-
122-
letrealProjectId= workspace.ProjectTracker.GetOrCreateProjectIdForPath(projectFileName, projectDisplayName)
123+
124+
legacyProjectIdLookup.[projectGuid]<- projectContext.Id
123125

124126
// Sync IProjectSite --> projectContext, and IProjectSite --> ProjectInfoManage
125-
this.SyncLegacyProject(realProjectId,projectContext, site)
127+
this.SyncLegacyProject(projectContext, site)
126128

127129
site.BuildErrorReporter<- Some(projectContext:?> Microsoft.VisualStudio.Shell.Interop.IVsLanguageServiceBuildErrorReporter2)
128130

129131
// TODO: consider forceUpdate = false here. forceUpdate=true may be causing repeated computation?
130132
site.AdviseProjectSiteChanges(FSharpConstants.FSharpLanguageServiceCallbackName,
131-
AdviseProjectSiteChanges(fun()-> this.SyncLegacyProject(realProjectId,projectContext, site)))
133+
AdviseProjectSiteChanges(fun()-> this.SyncLegacyProject(projectContext, site)))
132134

133135
site.AdviseProjectSiteClosed(FSharpConstants.FSharpLanguageServiceCallbackName,
134136
AdviseProjectSiteChanges(fun()->
135-
projectInfoManager.ClearInfoForProject(realProjectId)
137+
projectInfoManager.ClearInfoForProject(projectContext.Id)
136138
optionsAssociation.Remove(projectContext)|> ignore
137139
projectContext.Dispose()))
138140

@@ -151,7 +153,7 @@ type internal LegacyProjectWorkspaceMap(workspace: VisualStudioWorkspaceImpl,
151153
member__.OnAfterOpenProject(hier,_)=
152154
match hierwith
153155
|:? IProvideProjectSiteas siteProvider->
154-
letsetup=fun()-> this.SetupLegacyProjectFile(siteProvider, workspace)
156+
letsetup=fun()-> this.SetupLegacyProjectFile(siteProvider)
155157
let_,o= solution.GetProperty(int__VSPROPID.VSPROPID_IsSolutionOpen)
156158
if(match owith|:? boolas isOpen-> isOpen|_->false)then
157159
setup()
@@ -170,10 +172,12 @@ type internal LegacyProjectWorkspaceMap(workspace: VisualStudioWorkspaceImpl,
170172
match hierwith
171173
|:? IProvideProjectSiteas siteProvider->
172174
letsite= siteProvider.GetProjectSite()
173-
letprojectFileName= site.ProjectFileName
174-
letprojectDisplayName= projectDisplayNameOf projectFileName
175-
letprojectId= workspace.ProjectTracker.GetOrCreateProjectIdForPath(projectFileName, projectDisplayName)
176-
legacyProjectLookup.TryRemove(projectId)|> ignore
175+
letprojectGuid= Guid(site.ProjectGuid)
176+
match legacyProjectIdLookup.TryGetValue(projectGuid)with
177+
|true, projectId->
178+
legacyProjectIdLookup.TryRemove(projectGuid)|> ignore
179+
legacyProjectLookup.TryRemove(projectId)|> ignore
180+
|_->()
177181
|_->()
178182
VSConstants.S_OK
179183

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp