diff --git a/src/JSInterop/.editorconfig b/src/JSInterop/.editorconfig
deleted file mode 100644
index 0d238f8e41..0000000000
--- a/src/JSInterop/.editorconfig
+++ /dev/null
@@ -1,27 +0,0 @@
-# All Files
-[*]
-charset = utf-8
-end_of_line = crlf
-indent_style = space
-indent_size = 4
-insert_final_newline = false
-trim_trailing_whitespace = true
-
-# Solution Files
-[*.sln]
-indent_style = tab
-
-# Markdown Files
-[*.md]
-trim_trailing_whitespace = false
-
-# Web Files
-[*.{htm,html,js,ts,css,scss,less}]
-insert_final_newline = true
-indent_size = 2
-
-[*.{yml,json}]
-indent_size = 2
-
-[*.{xml,csproj,config,*proj,targets,props}]
-indent_size = 2
diff --git a/src/JSInterop/Directory.Build.props b/src/JSInterop/Directory.Build.props
new file mode 100644
index 0000000000..f25c1d90ce
--- /dev/null
+++ b/src/JSInterop/Directory.Build.props
@@ -0,0 +1,7 @@
+
+
+
+
+ true
+
+
diff --git a/src/JSInterop/src/Microsoft.JSInterop.JS/Microsoft.JSInterop.JS.csproj b/src/JSInterop/Microsoft.JSInterop.JS/src/Microsoft.JSInterop.JS.csproj
similarity index 76%
rename from src/JSInterop/src/Microsoft.JSInterop.JS/Microsoft.JSInterop.JS.csproj
rename to src/JSInterop/Microsoft.JSInterop.JS/src/Microsoft.JSInterop.JS.csproj
index 4a6ba93ebb..7f806d0afa 100644
--- a/src/JSInterop/src/Microsoft.JSInterop.JS/Microsoft.JSInterop.JS.csproj
+++ b/src/JSInterop/Microsoft.JSInterop.JS/src/Microsoft.JSInterop.JS.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/src/JSInterop/src/Microsoft.JSInterop.JS/package-lock.json b/src/JSInterop/Microsoft.JSInterop.JS/src/package-lock.json
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop.JS/package-lock.json
rename to src/JSInterop/Microsoft.JSInterop.JS/src/package-lock.json
diff --git a/src/JSInterop/src/Microsoft.JSInterop.JS/package.json b/src/JSInterop/Microsoft.JSInterop.JS/src/package.json
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop.JS/package.json
rename to src/JSInterop/Microsoft.JSInterop.JS/src/package.json
diff --git a/src/JSInterop/src/Microsoft.JSInterop.JS/src/Microsoft.JSInterop.ts b/src/JSInterop/Microsoft.JSInterop.JS/src/src/Microsoft.JSInterop.ts
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop.JS/src/Microsoft.JSInterop.ts
rename to src/JSInterop/Microsoft.JSInterop.JS/src/src/Microsoft.JSInterop.ts
diff --git a/src/JSInterop/src/Microsoft.JSInterop.JS/tsconfig.json b/src/JSInterop/Microsoft.JSInterop.JS/src/tsconfig.json
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop.JS/tsconfig.json
rename to src/JSInterop/Microsoft.JSInterop.JS/src/tsconfig.json
diff --git a/src/JSInterop/Microsoft.JSInterop.sln b/src/JSInterop/Microsoft.JSInterop.sln
deleted file mode 100644
index d646a6b068..0000000000
--- a/src/JSInterop/Microsoft.JSInterop.sln
+++ /dev/null
@@ -1,58 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27703.2042
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{1290437E-A890-419E-A317-D0F7FEE185A5}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{B98D4F51-88FB-471C-B56F-752E8EE502E7}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.JSInterop", "src\Microsoft.JSInterop\Microsoft.JSInterop.csproj", "{CB4CD4A6-9BAA-46D1-944F-CE56DEC2663C}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.JSInterop.Test", "test\Microsoft.JSInterop.Test\Microsoft.JSInterop.Test.csproj", "{7FF8B199-52C0-4DFE-A73B-0C9E18220C0E}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.JSInterop.JS", "src\Microsoft.JSInterop.JS\Microsoft.JSInterop.JS.csproj", "{60BA5AAD-264A-437E-8319-577841C66CC6}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BE4CBB33-5C40-4A07-B6FC-1D7C3AE13024}"
- ProjectSection(SolutionItems) = preProject
- README.md = README.md
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mono.WebAssembly.Interop", "src\Mono.WebAssembly.Interop\Mono.WebAssembly.Interop.csproj", "{10145E99-1B2D-40C5-9595-582BDAF3E024}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {CB4CD4A6-9BAA-46D1-944F-CE56DEC2663C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CB4CD4A6-9BAA-46D1-944F-CE56DEC2663C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CB4CD4A6-9BAA-46D1-944F-CE56DEC2663C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CB4CD4A6-9BAA-46D1-944F-CE56DEC2663C}.Release|Any CPU.Build.0 = Release|Any CPU
- {7FF8B199-52C0-4DFE-A73B-0C9E18220C0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7FF8B199-52C0-4DFE-A73B-0C9E18220C0E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7FF8B199-52C0-4DFE-A73B-0C9E18220C0E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7FF8B199-52C0-4DFE-A73B-0C9E18220C0E}.Release|Any CPU.Build.0 = Release|Any CPU
- {60BA5AAD-264A-437E-8319-577841C66CC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {60BA5AAD-264A-437E-8319-577841C66CC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {60BA5AAD-264A-437E-8319-577841C66CC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {60BA5AAD-264A-437E-8319-577841C66CC6}.Release|Any CPU.Build.0 = Release|Any CPU
- {10145E99-1B2D-40C5-9595-582BDAF3E024}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {10145E99-1B2D-40C5-9595-582BDAF3E024}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {10145E99-1B2D-40C5-9595-582BDAF3E024}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {10145E99-1B2D-40C5-9595-582BDAF3E024}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {CB4CD4A6-9BAA-46D1-944F-CE56DEC2663C} = {1290437E-A890-419E-A317-D0F7FEE185A5}
- {7FF8B199-52C0-4DFE-A73B-0C9E18220C0E} = {B98D4F51-88FB-471C-B56F-752E8EE502E7}
- {60BA5AAD-264A-437E-8319-577841C66CC6} = {1290437E-A890-419E-A317-D0F7FEE185A5}
- {10145E99-1B2D-40C5-9595-582BDAF3E024} = {1290437E-A890-419E-A317-D0F7FEE185A5}
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {7E07ABF2-427A-43FA-A6A4-82B21B96ACAF}
- EndGlobalSection
-EndGlobal
diff --git a/src/JSInterop/src/Microsoft.JSInterop/DotNetDispatcher.cs b/src/JSInterop/Microsoft.JSInterop/src/DotNetDispatcher.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/DotNetDispatcher.cs
rename to src/JSInterop/Microsoft.JSInterop/src/DotNetDispatcher.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/DotNetObjectRef.cs b/src/JSInterop/Microsoft.JSInterop/src/DotNetObjectRef.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/DotNetObjectRef.cs
rename to src/JSInterop/Microsoft.JSInterop/src/DotNetObjectRef.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/ICustomArgSerializer.cs b/src/JSInterop/Microsoft.JSInterop/src/ICustomArgSerializer.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/ICustomArgSerializer.cs
rename to src/JSInterop/Microsoft.JSInterop/src/ICustomArgSerializer.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/IJSInProcessRuntime.cs b/src/JSInterop/Microsoft.JSInterop/src/IJSInProcessRuntime.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/IJSInProcessRuntime.cs
rename to src/JSInterop/Microsoft.JSInterop/src/IJSInProcessRuntime.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/IJSRuntime.cs b/src/JSInterop/Microsoft.JSInterop/src/IJSRuntime.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/IJSRuntime.cs
rename to src/JSInterop/Microsoft.JSInterop/src/IJSRuntime.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/InteropArgSerializerStrategy.cs b/src/JSInterop/Microsoft.JSInterop/src/InteropArgSerializerStrategy.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/InteropArgSerializerStrategy.cs
rename to src/JSInterop/Microsoft.JSInterop/src/InteropArgSerializerStrategy.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/JSAsyncCallResult.cs b/src/JSInterop/Microsoft.JSInterop/src/JSAsyncCallResult.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/JSAsyncCallResult.cs
rename to src/JSInterop/Microsoft.JSInterop/src/JSAsyncCallResult.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/JSException.cs b/src/JSInterop/Microsoft.JSInterop/src/JSException.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/JSException.cs
rename to src/JSInterop/Microsoft.JSInterop/src/JSException.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/JSInProcessRuntimeBase.cs b/src/JSInterop/Microsoft.JSInterop/src/JSInProcessRuntimeBase.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/JSInProcessRuntimeBase.cs
rename to src/JSInterop/Microsoft.JSInterop/src/JSInProcessRuntimeBase.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/JSInvokableAttribute.cs b/src/JSInterop/Microsoft.JSInterop/src/JSInvokableAttribute.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/JSInvokableAttribute.cs
rename to src/JSInterop/Microsoft.JSInterop/src/JSInvokableAttribute.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/JSRuntime.cs b/src/JSInterop/Microsoft.JSInterop/src/JSRuntime.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/JSRuntime.cs
rename to src/JSInterop/Microsoft.JSInterop/src/JSRuntime.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/JSRuntimeBase.cs b/src/JSInterop/Microsoft.JSInterop/src/JSRuntimeBase.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/JSRuntimeBase.cs
rename to src/JSInterop/Microsoft.JSInterop/src/JSRuntimeBase.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/Json/CamelCase.cs b/src/JSInterop/Microsoft.JSInterop/src/Json/CamelCase.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/Json/CamelCase.cs
rename to src/JSInterop/Microsoft.JSInterop/src/Json/CamelCase.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/Json/Json.cs b/src/JSInterop/Microsoft.JSInterop/src/Json/Json.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/Json/Json.cs
rename to src/JSInterop/Microsoft.JSInterop/src/Json/Json.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/Json/SimpleJson/README.txt b/src/JSInterop/Microsoft.JSInterop/src/Json/SimpleJson/README.txt
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/Json/SimpleJson/README.txt
rename to src/JSInterop/Microsoft.JSInterop/src/Json/SimpleJson/README.txt
diff --git a/src/JSInterop/src/Microsoft.JSInterop/Json/SimpleJson/SimpleJson.cs b/src/JSInterop/Microsoft.JSInterop/src/Json/SimpleJson/SimpleJson.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/Json/SimpleJson/SimpleJson.cs
rename to src/JSInterop/Microsoft.JSInterop/src/Json/SimpleJson/SimpleJson.cs
diff --git a/src/JSInterop/Microsoft.JSInterop/src/Microsoft.JSInterop.csproj b/src/JSInterop/Microsoft.JSInterop/src/Microsoft.JSInterop.csproj
new file mode 100644
index 0000000000..bdfea26ad5
--- /dev/null
+++ b/src/JSInterop/Microsoft.JSInterop/src/Microsoft.JSInterop.csproj
@@ -0,0 +1,10 @@
+
+
+
+ netstandard2.0
+ Abstractions and features for interop between .NET and JavaScript code.
+ javascript;interop
+ true
+
+
+
diff --git a/src/JSInterop/src/Microsoft.JSInterop/Properties/AssemblyInfo.cs b/src/JSInterop/Microsoft.JSInterop/src/Properties/AssemblyInfo.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/Properties/AssemblyInfo.cs
rename to src/JSInterop/Microsoft.JSInterop/src/Properties/AssemblyInfo.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop/TaskGenericsUtil.cs b/src/JSInterop/Microsoft.JSInterop/src/TaskGenericsUtil.cs
similarity index 100%
rename from src/JSInterop/src/Microsoft.JSInterop/TaskGenericsUtil.cs
rename to src/JSInterop/Microsoft.JSInterop/src/TaskGenericsUtil.cs
diff --git a/src/JSInterop/test/Microsoft.JSInterop.Test/DotNetDispatcherTest.cs b/src/JSInterop/Microsoft.JSInterop/test/DotNetDispatcherTest.cs
similarity index 100%
rename from src/JSInterop/test/Microsoft.JSInterop.Test/DotNetDispatcherTest.cs
rename to src/JSInterop/Microsoft.JSInterop/test/DotNetDispatcherTest.cs
diff --git a/src/JSInterop/test/Microsoft.JSInterop.Test/DotNetObjectRefTest.cs b/src/JSInterop/Microsoft.JSInterop/test/DotNetObjectRefTest.cs
similarity index 100%
rename from src/JSInterop/test/Microsoft.JSInterop.Test/DotNetObjectRefTest.cs
rename to src/JSInterop/Microsoft.JSInterop/test/DotNetObjectRefTest.cs
diff --git a/src/JSInterop/test/Microsoft.JSInterop.Test/JSInProcessRuntimeBaseTest.cs b/src/JSInterop/Microsoft.JSInterop/test/JSInProcessRuntimeBaseTest.cs
similarity index 100%
rename from src/JSInterop/test/Microsoft.JSInterop.Test/JSInProcessRuntimeBaseTest.cs
rename to src/JSInterop/Microsoft.JSInterop/test/JSInProcessRuntimeBaseTest.cs
diff --git a/src/JSInterop/test/Microsoft.JSInterop.Test/JSRuntimeBaseTest.cs b/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeBaseTest.cs
similarity index 100%
rename from src/JSInterop/test/Microsoft.JSInterop.Test/JSRuntimeBaseTest.cs
rename to src/JSInterop/Microsoft.JSInterop/test/JSRuntimeBaseTest.cs
diff --git a/src/JSInterop/test/Microsoft.JSInterop.Test/JSRuntimeTest.cs b/src/JSInterop/Microsoft.JSInterop/test/JSRuntimeTest.cs
similarity index 100%
rename from src/JSInterop/test/Microsoft.JSInterop.Test/JSRuntimeTest.cs
rename to src/JSInterop/Microsoft.JSInterop/test/JSRuntimeTest.cs
diff --git a/src/JSInterop/test/Microsoft.JSInterop.Test/JsonUtilTest.cs b/src/JSInterop/Microsoft.JSInterop/test/JsonUtilTest.cs
similarity index 100%
rename from src/JSInterop/test/Microsoft.JSInterop.Test/JsonUtilTest.cs
rename to src/JSInterop/Microsoft.JSInterop/test/JsonUtilTest.cs
diff --git a/src/JSInterop/Microsoft.JSInterop/test/Microsoft.JSInterop.Test.csproj b/src/JSInterop/Microsoft.JSInterop/test/Microsoft.JSInterop.Test.csproj
new file mode 100644
index 0000000000..5e88f44a3a
--- /dev/null
+++ b/src/JSInterop/Microsoft.JSInterop/test/Microsoft.JSInterop.Test.csproj
@@ -0,0 +1,11 @@
+
+
+
+ netcoreapp3.0
+
+
+
+
+
+
+
diff --git a/src/JSInterop/src/Mono.WebAssembly.Interop/InternalCalls.cs b/src/JSInterop/Mono.WebAssembly.Interop/src/InternalCalls.cs
similarity index 100%
rename from src/JSInterop/src/Mono.WebAssembly.Interop/InternalCalls.cs
rename to src/JSInterop/Mono.WebAssembly.Interop/src/InternalCalls.cs
diff --git a/src/JSInterop/Mono.WebAssembly.Interop/src/Mono.WebAssembly.Interop.csproj b/src/JSInterop/Mono.WebAssembly.Interop/src/Mono.WebAssembly.Interop.csproj
new file mode 100644
index 0000000000..75c8272e95
--- /dev/null
+++ b/src/JSInterop/Mono.WebAssembly.Interop/src/Mono.WebAssembly.Interop.csproj
@@ -0,0 +1,14 @@
+
+
+
+ netstandard2.0
+
+ false
+ false
+
+
+
+
+
+
+
diff --git a/src/JSInterop/src/Mono.WebAssembly.Interop/MonoWebAssemblyJSRuntime.cs b/src/JSInterop/Mono.WebAssembly.Interop/src/MonoWebAssemblyJSRuntime.cs
similarity index 100%
rename from src/JSInterop/src/Mono.WebAssembly.Interop/MonoWebAssemblyJSRuntime.cs
rename to src/JSInterop/Mono.WebAssembly.Interop/src/MonoWebAssemblyJSRuntime.cs
diff --git a/src/JSInterop/src/Microsoft.JSInterop.JS/.gitignore b/src/JSInterop/src/Microsoft.JSInterop.JS/.gitignore
deleted file mode 100644
index 849ddff3b7..0000000000
--- a/src/JSInterop/src/Microsoft.JSInterop.JS/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-dist/
diff --git a/src/JSInterop/src/Microsoft.JSInterop/Microsoft.JSInterop.csproj b/src/JSInterop/src/Microsoft.JSInterop/Microsoft.JSInterop.csproj
deleted file mode 100644
index 9f5c4f4abb..0000000000
--- a/src/JSInterop/src/Microsoft.JSInterop/Microsoft.JSInterop.csproj
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
- netstandard2.0
-
-
-
diff --git a/src/JSInterop/src/Mono.WebAssembly.Interop/Mono.WebAssembly.Interop.csproj b/src/JSInterop/src/Mono.WebAssembly.Interop/Mono.WebAssembly.Interop.csproj
deleted file mode 100644
index 81f1173b55..0000000000
--- a/src/JSInterop/src/Mono.WebAssembly.Interop/Mono.WebAssembly.Interop.csproj
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- netstandard2.0
-
-
-
-
-
-
-
diff --git a/src/JSInterop/test/Microsoft.JSInterop.Test/Microsoft.JSInterop.Test.csproj b/src/JSInterop/test/Microsoft.JSInterop.Test/Microsoft.JSInterop.Test.csproj
deleted file mode 100644
index 893a11d33a..0000000000
--- a/src/JSInterop/test/Microsoft.JSInterop.Test/Microsoft.JSInterop.Test.csproj
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
- netcoreapp2.1
- false
- 7.3
-
-
-
-
-
-
-
-
-
-
-
-
-
-