diff --git a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
index 7d75ba27ad8..8063fb00ce8 100644
--- a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
+++ b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
@@ -86,6 +86,7 @@
+
diff --git a/vsintegration/src/FSharp.Editor/Navigation/FindDefinitionService.fs b/vsintegration/src/FSharp.Editor/Navigation/FindDefinitionService.fs
new file mode 100644
index 00000000000..fca8f8ef964
--- /dev/null
+++ b/vsintegration/src/FSharp.Editor/Navigation/FindDefinitionService.fs
@@ -0,0 +1,30 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
+
+namespace Microsoft.VisualStudio.FSharp.Editor
+
+open System.Composition
+open System.Threading
+
+open FSharp.Compiler.Text.Range
+
+open Microsoft.CodeAnalysis
+open Microsoft.CodeAnalysis.ExternalAccess.FSharp.GoToDefinition
+
+open Microsoft.VisualStudio.Shell
+open Microsoft.VisualStudio.Shell.Interop
+open System.Collections.Immutable
+open System.Threading.Tasks
+
+[)>]
+[)>]
+type internal FSharpFindDefinitionService
+ []
+ (metadataAsSource: FSharpMetadataAsSourceService) =
+
+ let statusBar = StatusBar(ServiceProvider.GlobalProvider.GetService())
+
+ interface IFSharpFindDefinitionService with
+ member _.FindDefinitionsAsync (document: Document, position: int, cancellationToken: CancellationToken) =
+ let navigation = FSharpNavigation(statusBar, metadataAsSource, document, rangeStartup)
+ let definitions = navigation.FindDefinitions(position, cancellationToken)
+ ImmutableArray.CreateRange(definitions) |> Task.FromResult
diff --git a/vsintegration/src/FSharp.Editor/Navigation/GoToDefinition.fs b/vsintegration/src/FSharp.Editor/Navigation/GoToDefinition.fs
index bb84e395b8d..882b2ab574b 100644
--- a/vsintegration/src/FSharp.Editor/Navigation/GoToDefinition.fs
+++ b/vsintegration/src/FSharp.Editor/Navigation/GoToDefinition.fs
@@ -699,7 +699,6 @@ type internal FSharpNavigation
| FSharpGoToDefinitionResult.NavigableItem(navItem) -> Some navItem
| _ -> None
)
- |> Task.FromResult
member _.TryGoToDefinition(position, cancellationToken) =
let gtd = GoToDefinition(metadataAsSource)
diff --git a/vsintegration/src/FSharp.Editor/Navigation/GoToDefinitionService.fs b/vsintegration/src/FSharp.Editor/Navigation/GoToDefinitionService.fs
index db2f3c92274..ccf40e36ce9 100644
--- a/vsintegration/src/FSharp.Editor/Navigation/GoToDefinitionService.fs
+++ b/vsintegration/src/FSharp.Editor/Navigation/GoToDefinitionService.fs
@@ -29,7 +29,7 @@ type internal FSharpGoToDefinitionService
/// Invoked with Peek Definition.
member _.FindDefinitionsAsync (document: Document, position: int, cancellationToken: CancellationToken) =
let navigation = FSharpNavigation(statusBar, metadataAsSource, document, rangeStartup)
- navigation.FindDefinitions(position, cancellationToken)
+ navigation.FindDefinitions(position, cancellationToken) |> Task.FromResult
/// Invoked with Go to Definition.
/// Try to navigate to the definiton of the symbol at the symbolRange in the originDocument