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

Commit8551c4c

Browse files
TIHanbrettfo
authored andcommitted
Trying to fix dev16 with latest changes
1 parent2bf3a16 commit8551c4c

File tree

5 files changed

+49
-33
lines changed

5 files changed

+49
-33
lines changed

‎build.cmd‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -611,8 +611,8 @@ if exist "%ProgramFiles%\Microsoft Visual Studio 12.0\common7\ide\devenv.exe" se
611611
:vsversionset
612612
if"%VisualStudioVersion%"==""echo Error: Could not find an installation of Visual Studio&&goto :failure
613613

614-
ifexist"%VS160COMNTOOLS%\..\..\MSBuild\15.0\Bin\MSBuild.exe" (
615-
set_msbuildexe="%VS160COMNTOOLS%\..\..\MSBuild\15.0\Bin\MSBuild.exe"
614+
ifexist"%VS160COMNTOOLS%\..\..\MSBuild\Current\Bin\MSBuild.exe" (
615+
set_msbuildexe="%VS160COMNTOOLS%\..\..\MSBuild\Current\Bin\MSBuild.exe"
616616
goto :havemsbuild
617617
)
618618
ifexist"%VS150COMNTOOLS%\..\..\MSBuild\15.0\Bin\MSBuild.exe" (

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

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ type internal FSharpProjectOptionsManager
5858
memberthis.AddOrUpdateSingleFileProject(projectId,data)= singleFileProjectTable.[projectId]<- data
5959

6060
/// Get the exact options for a single-file script
61-
memberthis.ComputeSingleFileOptions(tryGetOrCreateProjectId,fileName,loadTime,fileContents)=
61+
memberthis.ComputeSingleFileOptions(tryGetOrCreateProjectId,fileName,loadTime,fileContents,solution)=
6262
async{
6363
letextraProjectInfo= Some(box workspace)
6464
if SourceFile.MustBeSingleFileProject(fileName)then
@@ -70,22 +70,22 @@ type internal FSharpProjectOptionsManager
7070
// compiled and #r will refer to files on disk
7171
letreferencedProjectFileNames=[||]
7272
letsite= ProjectSitesAndFiles.CreateProjectSiteForScript(fileName, referencedProjectFileNames, options)
73-
letdeps,projectOptions= ProjectSitesAndFiles.GetProjectOptionsForProjectSite(settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, site, serviceProvider,(tryGetOrCreateProjectId fileName), fileName, options.ExtraProjectInfo, Some projectOptionsTable)
73+
letdeps,projectOptions= ProjectSitesAndFiles.GetProjectOptionsForProjectSite(settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, site, serviceProvider,(tryGetOrCreateProjectId fileName), fileName, options.ExtraProjectInfo,solution,Some projectOptionsTable)
7474
letparsingOptions,_= checkerProvider.Checker.GetParsingOptionsFromProjectOptions(projectOptions)
7575
return(deps, parsingOptions, projectOptions)
7676
else
7777
letsite= ProjectSitesAndFiles.ProjectSiteOfSingleFile(fileName)
78-
letdeps,projectOptions= ProjectSitesAndFiles.GetProjectOptionsForProjectSite(settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, site, serviceProvider,(tryGetOrCreateProjectId fileName), fileName, extraProjectInfo, Some projectOptionsTable)
78+
letdeps,projectOptions= ProjectSitesAndFiles.GetProjectOptionsForProjectSite(settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, site, serviceProvider,(tryGetOrCreateProjectId fileName), fileName, extraProjectInfo,solution,Some projectOptionsTable)
7979
letparsingOptions,_= checkerProvider.Checker.GetParsingOptionsFromProjectOptions(projectOptions)
8080
return(deps, parsingOptions, projectOptions)
8181
}
8282

8383
/// Update the info for a project in the project table
84-
memberthis.UpdateProjectInfo(tryGetOrCreateProjectId,projectId,site,userOpName,invalidateConfig)=
84+
memberthis.UpdateProjectInfo(tryGetOrCreateProjectId,projectId,site,userOpName,invalidateConfig,solution)=
8585
Logger.Log LogEditorFunctionId.LanguageService_UpdateProjectInfo
8686
projectOptionsTable.AddOrUpdateProject(projectId,(fun isRefresh->
8787
letextraProjectInfo= Some(box workspace)
88-
letreferencedProjects,projectOptions= ProjectSitesAndFiles.GetProjectOptionsForProjectSite(settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, site, serviceProvider, Some(projectId), site.ProjectFileName, extraProjectInfo, Some projectOptionsTable)
88+
letreferencedProjects,projectOptions= ProjectSitesAndFiles.GetProjectOptionsForProjectSite(settings.LanguageServicePerformance.EnableInMemoryCrossProjectReferences, site, serviceProvider, Some(projectId), site.ProjectFileName, extraProjectInfo,solution, Some projectOptionsTable)
8989
if invalidateConfigthen checkerProvider.Checker.InvalidateConfiguration(projectOptions, startBackgroundCompileIfAlreadySeen=not isRefresh, userOpName= userOpName+".UpdateProjectInfo")
9090
letreferencedProjectIds= referencedProjects|> Array.choose tryGetOrCreateProjectId
9191
letparsingOptions,_= checkerProvider.Checker.GetParsingOptionsFromProjectOptions(projectOptions)
@@ -122,13 +122,29 @@ type internal FSharpProjectOptionsManager
122122
// NOTE: we don't use FCS cross-project references from scripts to projects. The projects must have been
123123
// compiled and #r will refer to files on disk.
124124
lettryGetOrCreateProjectId _= None
125-
let!_referencedProjectFileNames,parsingOptions,projectOptions= this.ComputeSingleFileOptions(tryGetOrCreateProjectId, fileName, loadTime, sourceText.ToString())
125+
let!_referencedProjectFileNames,parsingOptions,projectOptions= this.ComputeSingleFileOptions(tryGetOrCreateProjectId, fileName, loadTime, sourceText.ToString(), document.Project.Solution)
126126
this.AddOrUpdateSingleFileProject(projectId,(loadTime, parsingOptions, projectOptions))
127127
return Some(parsingOptions, None, projectOptions)
128128
with ex->
129129
Assert.Exception(ex)
130130
return None
131-
|_->return this.TryGetOptionsForProject(projectId)
131+
|_->
132+
match this.TryGetOptionsForProject(projectId)with
133+
| Some(parsingOptions, site, projectOptions)->
134+
letprojectOptions=
135+
{ projectOptionswith
136+
ReferencedProjects=
137+
document.Project.ProjectReferences
138+
|> Seq.choose(fun projectReference->
139+
letreferenceProject= document.Project.Solution.GetProject(projectReference.ProjectId)
140+
match this.TryGetOptionsForProject(projectReference.ProjectId)with
141+
| Some(_,_, referenceProjectOptions)-> Some(referenceProject.OutputFilePath, referenceProjectOptions)
142+
|_-> None
143+
)
144+
|> Seq.toArray
145+
}
146+
return Some(parsingOptions, site, projectOptions)
147+
|_->return None
132148
}
133149

134150
/// Get the options for a document or project relevant for syntax processing.
@@ -143,7 +159,7 @@ type internal FSharpProjectOptionsManager
143159
memberthis.ProvideProjectSiteProvider(project:Project)= provideProjectSiteProvider(workspace, project, serviceProvider, Some projectOptionsTable)
144160

145161
/// Tell the checker to update the project info for the specified project id
146-
memberthis.UpdateProjectInfoWithProjectId(projectId:ProjectId,userOpName,invalidateConfig)=
162+
memberthis.UpdateProjectInfoWithProjectId(projectId:ProjectId,userOpName,invalidateConfig,solution)=
147163
lethier= workspace.GetHierarchy(projectId)
148164
match hierwith
149165
|null->()
@@ -153,13 +169,13 @@ type internal FSharpProjectOptionsManager
153169
letsiteProvider= this.ProvideProjectSiteProvider(project)
154170
letprojectSite= siteProvider.GetProjectSite()
155171
if projectSite.CompilationSourceFiles.Length<>0then
156-
this.UpdateProjectInfo(tryGetOrCreateProjectId, projectId, projectSite, userOpName, invalidateConfig)
172+
this.UpdateProjectInfo(tryGetOrCreateProjectId, projectId, projectSite, userOpName, invalidateConfig, solution)
157173
|_->()
158174

159175
/// Tell the checker to update the project info for the specified project id
160-
memberthis.UpdateDocumentInfoWithProjectId(projectId:ProjectId,documentId:DocumentId,userOpName,invalidateConfig)=
176+
memberthis.UpdateDocumentInfoWithProjectId(projectId:ProjectId,documentId:DocumentId,userOpName,invalidateConfig,solution)=
161177
if workspace.IsDocumentOpen(documentId)then
162-
this.UpdateProjectInfoWithProjectId(projectId, userOpName, invalidateConfig)
178+
this.UpdateProjectInfoWithProjectId(projectId, userOpName, invalidateConfig, solution)
163179

164180
[<Export>]
165181
/// This handles commandline change notifications from the Dotnet Project-system
@@ -181,6 +197,6 @@ type internal FSharpProjectOptionsManager
181197
letreferencePaths= references|> Seq.map(fun r-> fullPath r.Reference)|> Seq.toArray
182198

183199
projectOptionsTable.SetOptionsWithProjectId(projectId, sourcePaths, referencePaths, options.ToArray())
184-
this.UpdateProjectInfoWithProjectId(projectId,"HandleCommandLineChanges", invalidateConfig=true)
200+
this.UpdateProjectInfoWithProjectId(projectId,"HandleCommandLineChanges", invalidateConfig=true, solution=workspace.CurrentSolution)
185201

186202
member__.Checker= checkerProvider.Checker

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ type internal FSharpLanguageService(package : FSharpPackage, solution: IVsSoluti
240240

241241
singleFileProjects.[projectId]<- projectContext
242242

243-
let_referencedProjectFileNames,parsingOptions,projectOptions= projectInfoManager.ComputeSingleFileOptions(tryGetOrCreateProjectId workspace, fileName, loadTime, fileContents)|> Async.RunSynchronously
243+
let_referencedProjectFileNames,parsingOptions,projectOptions= projectInfoManager.ComputeSingleFileOptions(tryGetOrCreateProjectId workspace, fileName, loadTime, fileContents, workspace.CurrentSolution)|> Async.RunSynchronously
244244
projectInfoManager.AddOrUpdateSingleFileProject(projectId,(loadTime, parsingOptions, projectOptions))
245245

246246
overridethis.ContentTypeName= FSharpConstants.FSharpContentTypeName

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ type internal LegacyProjectWorkspaceMap(workspace: VisualStudioWorkspaceImpl,
103103

104104
// update the cached options
105105
if updatedthen
106-
projectInfoManager.UpdateProjectInfo(tryGetOrCreateProjectId workspace, projectId, site, userOpName+".SyncLegacyProject", invalidateConfig=true)
106+
projectInfoManager.UpdateProjectInfo(tryGetOrCreateProjectId workspace, projectId, site, userOpName+".SyncLegacyProject", invalidateConfig=true, solution=workspace.CurrentSolution)
107107

108108
letinfo=(updatedFiles, updatedRefs)
109109
legacyProjectLookup.AddOrUpdate(projectId, info,fun _ _-> info)|> ignore
@@ -159,7 +159,7 @@ type internal LegacyProjectWorkspaceMap(workspace: VisualStudioWorkspaceImpl,
159159
optionsAssociation.Remove(projectContext)|> ignore
160160
projectContext.Dispose()))
161161

162-
for referencedSitein ProjectSitesAndFiles.GetReferencedProjectSites(Some realProjectId, site, serviceProvider, Some(workspace:>obj), Some projectInfoManager.FSharpOptions)do
162+
for referencedSitein ProjectSitesAndFiles.GetReferencedProjectSites(Some realProjectId, site, serviceProvider, Some(workspace:>obj),workspace.CurrentSolution,Some projectInfoManager.FSharpOptions)do
163163
setup referencedSite
164164

165165
setup(siteProvider.GetProjectSite())

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

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ type internal ProjectSitesAndFiles() =
221221
|_-> None
222222
| Some_-> None
223223

224-
static let recreferencedProvideProjectSites(projectIdOpt:ProjectId option,projectSite:IProjectSite,serviceProvider:System.IServiceProvider,extraProjectInfo:obj option,projectOptionsTable:FSharpProjectOptionsTable option)=
224+
static let recreferencedProvideProjectSites(projectIdOpt:ProjectId option,projectSite:IProjectSite,serviceProvider:System.IServiceProvider,extraProjectInfo:obj option,solution:Solution,projectOptionsTable:FSharpProjectOptionsTable option)=
225225
letgetReferencesForSolutionService(solutionService:IVsSolution)=
226226
[|
227227
match referencedProjects projectSite, extraProjectInfowith
@@ -230,14 +230,14 @@ type internal ProjectSitesAndFiles() =
230230
ifnot(String.IsNullOrWhiteSpace(path))then
231231
match projectIdOptwith
232232
| Some(projectId)->
233-
letproject=workspace.CurrentSolution.GetProject(projectId)
233+
letproject=solution.GetProject(projectId)
234234
ifnot(isNull project)then
235-
for referencein project.ProjectReferencesdo
236-
letproject= workspace.CurrentSolution.GetProject(reference.ProjectId)
237-
ifnot(isNull project)&& project.Language= FSharpConstants.FSharpLanguageNamethen
238-
letsiteProvider=provideProjectSiteProvider(workspace, project, serviceProvider, projectOptionsTable)
239-
letreferenceProject=workspace.ProjectTracker.GetProject(reference.ProjectId)
240-
letoutputPath= referenceProject.BinOutputPath
235+
letreferences= project.ProjectReferences|> Seq.toArray
236+
for referencein referencesdo
237+
letreferenceProject= solution.GetProject(reference.ProjectId)
238+
ifnot(isNull referenceProject)&& project.Language=FSharpConstants.FSharpLanguageNamethen
239+
letsiteProvider=provideProjectSiteProvider(workspace, referenceProject, serviceProvider, projectOptionsTable)
240+
letoutputPath= referenceProject.OutputFilePath
241241
yield Some project.Id, project.FilePath, outputPath, siteProvider
242242
|_->()
243243

@@ -259,8 +259,8 @@ type internal ProjectSitesAndFiles() =
259259
| None->()
260260
}
261261

262-
static let recreferencedProjectsOf(projectIdOpt,projectSite,serviceProvider,extraProjectInfo,projectOptionsTable)=
263-
[|for(projectIdOpt, projectFileName, outputPath,_projectSiteProvider)in referencedProvideProjectSites(projectIdOpt, projectSite, serviceProvider, extraProjectInfo, projectOptionsTable)do
262+
static let recreferencedProjectsOf(projectIdOpt,projectSite,serviceProvider,extraProjectInfo,solution,projectOptionsTable)=
263+
[|for(projectIdOpt, projectFileName, outputPath,_projectSiteProvider)in referencedProvideProjectSites(projectIdOpt, projectSite, serviceProvider, extraProjectInfo,solution,projectOptionsTable)do
264264
letreferencedProjectOptionsOpt=
265265
projectOptionsTable
266266
|> Option.bind(fun x->
@@ -276,10 +276,10 @@ type internal ProjectSitesAndFiles() =
276276
|_->()
277277
|]
278278

279-
andgetProjectOptionsForProjectSite(enableInMemoryCrossProjectReferences,projectSite,serviceProvider,projectIdOpt,fileName,extraProjectInfo,projectOptionsTable)=
279+
andgetProjectOptionsForProjectSite(enableInMemoryCrossProjectReferences,projectSite,serviceProvider,projectIdOpt,fileName,extraProjectInfo,solution,projectOptionsTable)=
280280
letreferencedProjectFileNames,referencedProjectOptions=
281281
if enableInMemoryCrossProjectReferencesthen
282-
referencedProjectsOf(projectIdOpt, projectSite, serviceProvider, extraProjectInfo, projectOptionsTable)
282+
referencedProjectsOf(projectIdOpt, projectSite, serviceProvider, extraProjectInfo,solution,projectOptionsTable)
283283
|> Array.unzip
284284
else[||],[||]
285285
letoption=
@@ -319,16 +319,16 @@ type internal ProjectSitesAndFiles() =
319319
failwith".fsx or .fsscript should have been treated as implicit project"
320320
new ProjectSiteOfSingleFile(filename):> IProjectSite
321321

322-
static memberGetReferencedProjectSites(projectIdOpt,projectSite:IProjectSite,serviceProvider:System.IServiceProvider,extraProjectInfo,projectOptions)=
323-
referencedProvideProjectSites(projectIdOpt, projectSite, serviceProvider, extraProjectInfo, projectOptions)
322+
static memberGetReferencedProjectSites(projectIdOpt,projectSite:IProjectSite,serviceProvider:System.IServiceProvider,extraProjectInfo,solution,projectOptions)=
323+
referencedProvideProjectSites(projectIdOpt, projectSite, serviceProvider, extraProjectInfo,solution,projectOptions)
324324
|> Seq.map(fun(_,_,_,ps)-> ps.GetProjectSite())
325325
|> Seq.toArray
326326

327327
/// Create project options for this project site.
328-
static memberGetProjectOptionsForProjectSite(enableInMemoryCrossProjectReferences,projectSite:IProjectSite,serviceProvider,projectId,filename,extraProjectInfo,projectOptionsTable)=
328+
static memberGetProjectOptionsForProjectSite(enableInMemoryCrossProjectReferences,projectSite:IProjectSite,serviceProvider,projectId,filename,extraProjectInfo,solution,projectOptionsTable)=
329329
match projectSitewith
330330
|:? IHaveCheckOptionsas hco-> hco.OriginalCheckOptions()
331-
|_-> getProjectOptionsForProjectSite(enableInMemoryCrossProjectReferences, projectSite, serviceProvider, projectId, filename, extraProjectInfo, projectOptionsTable)
331+
|_-> getProjectOptionsForProjectSite(enableInMemoryCrossProjectReferences, projectSite, serviceProvider, projectId, filename, extraProjectInfo,solution,projectOptionsTable)
332332

333333
/// Create project site for these project options
334334
static memberCreateProjectSiteForScript(filename,referencedProjectFileNames,checkOptions)=

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp