diff --git a/.gitignore b/.gitignore
index 21ad03fd2577..cdcaf4ef74e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,10 @@ obj/
.tools/
.packages/
+# Locally-customizable build props import
+/LocalDev.Build.props
+/LocalDev.Packages.props
+
# OS X Device Services Store
.DS_Store
diff --git a/Directory.Build.props b/Directory.Build.props
index c72b4a0cee9e..547e54a30dab 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -96,4 +96,9 @@
+
+
+ $(MSBuildThisFileDirectory)LocalDev.Build.props
+
+
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 8b7dd4136423..e6c593f8b9aa 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -157,4 +157,10 @@
+
+
+
+ $(MSBuildThisFileDirectory)LocalDev.Packages.props
+
+
diff --git a/documentation/local-dev/roslyn/LocalDev.Build.props b/documentation/local-dev/roslyn/LocalDev.Build.props
new file mode 100644
index 000000000000..bd17b543a344
--- /dev/null
+++ b/documentation/local-dev/roslyn/LocalDev.Build.props
@@ -0,0 +1,19 @@
+
+
+
+ $(MSBuildThisFileDirectory)..\roslyn
+ $(RestoreAdditionalProjectSources);$(RoslynRoot)\artifacts\packages\Debug\Shipping
+
+
+ $(MSBuildThisFileDirectory).packages\
+ $(UserProfile)\.nuget\packages
+
+
+
+
+
+
+
diff --git a/documentation/local-dev/roslyn/LocalDev.Packages.props b/documentation/local-dev/roslyn/LocalDev.Packages.props
new file mode 100644
index 000000000000..21bcc42615ca
--- /dev/null
+++ b/documentation/local-dev/roslyn/LocalDev.Packages.props
@@ -0,0 +1,24 @@
+
+
+
+
+ 4.14.0-dev
+ 3.12.0-dev
+
+ $(RoslynVersion)
+ $(RoslynVersion)
+ $(RoslynVersion)
+ $(RoslynVersion)
+ $(RoslynVersion)
+ $(RoslynVersion)
+ $(RoslynVersion)
+ $(RoslynVersion)
+ $(RoslynVersion)
+ $(RoslynAnalyzers)
+
+
+
+
+
+
+
diff --git a/documentation/local-dev/roslyn/readme.md b/documentation/local-dev/roslyn/readme.md
new file mode 100644
index 000000000000..7ad472c117a7
--- /dev/null
+++ b/documentation/local-dev/roslyn/readme.md
@@ -0,0 +1,37 @@
+# Instructions for Roslyn developers
+
+1. Check out a working copy of dotnet/roslyn, e.g. to the directory next to this repo's root `..\roslyn`.
+ Make sure the current working directory is the checkout of this repo.
+
+2. Copy LocalDev.Build.props to the root and set `RoslynRoot` property in the copied file to local Roslyn repo.
+
+ `cp documentation\local-dev\roslyn\LocalDev.Build.props LocalDev.Build.props`
+
+3. Copy LocalDev.Packages.props.roslyn to the root
+
+ `cp documentation\local-dev\roslyn\LocalDev.Packages.props LocalDev.Packages.props`
+
+4. Build Roslyn with:
+
+ `..\roslyn\Build.cmd -restore -pack`
+
+5. Clear the customized packages cache in `.packages`
+
+ `git clean -dxf .packages/`
+
+6. Restore packages
+
+7. Open solution and work normally
+
+8. Following another change to Roslyn.sln, repeat steps 4-6 to pick up those changes in sdk.
+
+Tip to speed up restore if .\packages starts containing more than just the Roslyn development packages. Clear the
+packages cache, and restore packages without using the customized local developer settings to update the per-user
+NuGet global package cache with the default packages used for Conversations. Then run a second restore to pick up
+just the local development packages for Roslyn.
+
+```
+git clean -dxf .packages/
+restore /p:SkipLocalDevSettings=true
+restore
+```
\ No newline at end of file