diff --git a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
index 9235da55b97..f304c930e6f 100644
--- a/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
+++ b/vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj
@@ -64,6 +64,9 @@
Completion\CompletionServiceFactory.fs
+
+ GoToDefinition\GoToDefinitionService.fs
+
diff --git a/vsintegration/src/FSharp.Editor/GoToDefinitionService.fs b/vsintegration/src/FSharp.Editor/GoToDefinitionService.fs
new file mode 100644
index 00000000000..f191051bf24
--- /dev/null
+++ b/vsintegration/src/FSharp.Editor/GoToDefinitionService.fs
@@ -0,0 +1,134 @@
+// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+namespace Microsoft.VisualStudio.FSharp.Editor
+
+open System
+open System.Composition
+open System.Collections.Concurrent
+open System.Collections.Generic
+open System.Collections.Immutable
+open System.Linq
+open System.Threading
+open System.Threading.Tasks
+open System.Runtime.CompilerServices
+
+open Microsoft.CodeAnalysis
+open Microsoft.CodeAnalysis.Classification
+open Microsoft.CodeAnalysis.Editor
+open Microsoft.CodeAnalysis.Editor.Host
+open Microsoft.CodeAnalysis.Editor.Navigation
+open Microsoft.CodeAnalysis.Editor.Shared.Utilities
+open Microsoft.CodeAnalysis.Host.Mef
+open Microsoft.CodeAnalysis.Text
+
+open Microsoft.VisualStudio.FSharp.LanguageService
+open Microsoft.VisualStudio.Text
+open Microsoft.VisualStudio.Text.Tagging
+
+open Microsoft.FSharp.Compiler.Range
+open Microsoft.FSharp.Compiler.SourceCodeServices
+
+type internal FSharpNavigableItem(document: Document, textSpan: TextSpan, displayString: string) =
+ interface INavigableItem with
+ member this.Glyph = Glyph.BasicFile
+ member this.DisplayFileLocation = true
+ member this.DisplayString = displayString
+ member this.Document = document
+ member this.SourceSpan = textSpan
+ member this.ChildItems = ImmutableArray.Empty
+
+[]
+[, FSharpCommonConstants.FSharpLanguageName)>]
+type internal FSharpGoToDefinitionService [] ([]presenters: IEnumerable) =
+
+ static member FindDefinition (sourceText: SourceText,
+ filePath: string,
+ position: int,
+ defines: string list,
+ options: FSharpProjectOptions,
+ textVersionHash: int,
+ cancellationToken: CancellationToken)
+ : Async