Explorar el Código

Merge branch 'release/2.1' into release/2.2

Nate McMaster hace 7 años
padre
commit
22f3166fa6
Se han modificado 100 ficheros con 756 adiciones y 643 borrados
  1. 1 0
      .azure/pipelines/jobs/default-build.yml
  2. 1 0
      .gitignore
  3. 2 1
      Directory.Build.props
  4. 1 0
      Directory.Build.targets
  5. 0 1
      build/buildorder.props
  6. 3 3
      build/dependencies.props
  7. 20 5
      build/repo.props
  8. 0 8
      build/repo.targets
  9. 0 1
      build/submodules.props
  10. 0 2
      docs/BuildFromSource.md
  11. 155 0
      eng/Baseline.Designer.props
  12. 13 0
      eng/Baseline.xml
  13. 20 13
      eng/Dependencies.props
  14. 13 0
      eng/ProjectReferences.props
  15. 28 2
      eng/scripts/CodeCheck.ps1
  16. 7 0
      eng/targets/Npm.Common.props
  17. 84 0
      eng/targets/Npm.Common.targets
  18. 2 2
      global.json
  19. 2 2
      korebuild-lock.txt
  20. 1 8
      src/AzureIntegration/AzureIntegration.sln
  21. 1 1
      src/Hosting/test/testassets/TestStartupAssembly1/TestStartupAssembly1.csproj
  22. 1 1
      src/Http/HttpAbstractions.sln
  23. 16 0
      src/Middleware/CORS/test/FunctionalTests/CORS.FunctionalTests.npmproj
  24. 1 1
      src/Servers/FunctionalTests.sln
  25. 1 0
      src/Shared/test/Shared.Tests/Microsoft.AspNetCore.Shared.Tests.csproj
  26. 0 58
      src/SignalR/.gitignore
  27. 29 15
      src/SignalR/Directory.Build.props
  28. 7 4
      src/SignalR/Directory.Build.targets
  29. 0 7
      src/SignalR/NuGetPackageVerifier.json
  30. 1 20
      src/SignalR/README.md
  31. 259 163
      src/SignalR/SignalR.sln
  32. 0 18
      src/SignalR/benchmarkapps/Crankier/Crankier.csproj
  33. 0 35
      src/SignalR/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks.csproj
  34. 3 0
      src/SignalR/build.cmd
  35. BIN
      src/SignalR/build/Key.snk
  36. 0 80
      src/SignalR/build/dependencies.props
  37. 0 19
      src/SignalR/build/repo.props
  38. 0 156
      src/SignalR/build/repo.targets
  39. 0 17
      src/SignalR/build/sources.props
  40. 0 0
      src/SignalR/clients/csharp/Client.Core/src/HubConnection.Log.cs
  41. 0 0
      src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs
  42. 0 0
      src/SignalR/clients/csharp/Client.Core/src/HubConnectionBuilder.cs
  43. 0 0
      src/SignalR/clients/csharp/Client.Core/src/HubConnectionBuilderExtensions.cs
  44. 0 0
      src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.InvokeAsync.cs
  45. 0 0
      src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.InvokeAsyncGeneric.cs
  46. 0 0
      src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.SendAsync.cs
  47. 0 0
      src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.StreamAsChannelAsync.cs
  48. 0 0
      src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.cs
  49. 0 0
      src/SignalR/clients/csharp/Client.Core/src/HubConnectionState.cs
  50. 0 0
      src/SignalR/clients/csharp/Client.Core/src/IConnectionFactory.cs
  51. 0 0
      src/SignalR/clients/csharp/Client.Core/src/IHubConnectionBuilder.cs
  52. 0 0
      src/SignalR/clients/csharp/Client.Core/src/Internal/ConnectionLogScope.cs
  53. 0 0
      src/SignalR/clients/csharp/Client.Core/src/Internal/InvocationRequest.cs
  54. 24 0
      src/SignalR/clients/csharp/Client.Core/src/Microsoft.AspNetCore.SignalR.Client.Core.csproj
  55. 0 0
      src/SignalR/clients/csharp/Client.Core/src/Properties/AssemblyInfo.cs
  56. 0 0
      src/SignalR/clients/csharp/Client.Core/src/baseline.netcore.json
  57. 0 0
      src/SignalR/clients/csharp/Client/src/HttpConnectionFactory.cs
  58. 0 0
      src/SignalR/clients/csharp/Client/src/HubConnectionBuilderHttpExtensions.cs
  59. 13 0
      src/SignalR/clients/csharp/Client/src/Microsoft.AspNetCore.SignalR.Client.csproj
  60. 0 0
      src/SignalR/clients/csharp/Client/src/baseline.netcore.json
  61. 0 0
      src/SignalR/clients/csharp/Client/test/FunctionalTests/HeaderUserIdProvider.cs
  62. 0 0
      src/SignalR/clients/csharp/Client/test/FunctionalTests/HubConnectionTests.cs
  63. 0 0
      src/SignalR/clients/csharp/Client/test/FunctionalTests/HubProtocolVersionTests.cs
  64. 0 0
      src/SignalR/clients/csharp/Client/test/FunctionalTests/Hubs.cs
  65. 25 0
      src/SignalR/clients/csharp/Client/test/FunctionalTests/Microsoft.AspNetCore.SignalR.Client.FunctionalTests.csproj
  66. 0 0
      src/SignalR/clients/csharp/Client/test/FunctionalTests/Startup.cs
  67. 0 0
      src/SignalR/clients/csharp/Client/test/FunctionalTests/VersionJsonHubProtocol.cs
  68. 0 0
      src/SignalR/clients/csharp/Client/test/FunctionalTests/VersionStartup.cs
  69. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionFactoryTests.cs
  70. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.ConnectionLifecycle.cs
  71. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.Helpers.cs
  72. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.Negotiate.cs
  73. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.Transport.cs
  74. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.cs
  75. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionBuilderExtensionsTests.cs
  76. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionBuilderTests.cs
  77. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.ConnectionLifecycle.cs
  78. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.Extensions.cs
  79. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.Helpers.cs
  80. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.Protocol.cs
  81. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.cs
  82. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/LongPollingTransportTests.cs
  83. 22 0
      src/SignalR/clients/csharp/Client/test/UnitTests/Microsoft.AspNetCore.SignalR.Client.Tests.csproj
  84. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/ResponseUtils.cs
  85. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/ServerSentEventsParserTests.cs
  86. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/ServerSentEventsTransportTests.cs
  87. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/TestConnection.cs
  88. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/TestHttpMessageHandler.cs
  89. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/TestTransport.cs
  90. 0 0
      src/SignalR/clients/csharp/Client/test/UnitTests/TestTransportFactory.cs
  91. 0 0
      src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.Log.cs
  92. 0 0
      src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.cs
  93. 0 0
      src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnectionOptions.cs
  94. 0 0
      src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/AccessTokenHttpMessageHandler.cs
  95. 0 0
      src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/ClientPipeOptions.cs
  96. 0 0
      src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/ConnectionLogScope.cs
  97. 0 0
      src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/Constants.cs
  98. 0 0
      src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/DefaultTransportFactory.cs
  99. 0 0
      src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/ITransport.cs
  100. 0 0
      src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/ITransportFactory.cs

+ 1 - 0
.azure/pipelines/jobs/default-build.yml

@@ -104,6 +104,7 @@ jobs:
   - checkout: self
   - checkout: self
     clean: true
     clean: true
   - task: NodeTool@0
   - task: NodeTool@0
+    displayName: Install Node 10.x
     inputs:
     inputs:
       versionSpec: 10.x
       versionSpec: 10.x
   - ${{ if and(eq(parameters.agentOs, 'Windows'), eq(parameters.codeSign, 'true')) }}:
   - ${{ if and(eq(parameters.agentOs, 'Windows'), eq(parameters.codeSign, 'true')) }}:

+ 1 - 0
.gitignore

@@ -28,3 +28,4 @@ src/**/global.json
 launchSettings.json
 launchSettings.json
 korebuild-lock.txt
 korebuild-lock.txt
 .gradle/
 .gradle/
+src/SignalR/clients/**/dist/

+ 2 - 1
Directory.Build.props

@@ -76,7 +76,7 @@
 
 
     <RepoRelativeProjectDir>$([MSBuild]::MakeRelative($(RepositoryRoot), $(MSBuildProjectDirectory)))</RepoRelativeProjectDir>
     <RepoRelativeProjectDir>$([MSBuild]::MakeRelative($(RepositoryRoot), $(MSBuildProjectDirectory)))</RepoRelativeProjectDir>
 
 
-    <IsBenchmarkProject Condition="$(MSBuildProjectName.EndsWith('.Performance'))">true</IsBenchmarkProject>
+    <IsBenchmarkProject Condition="$(MSBuildProjectName.EndsWith('.Performance')) OR $(RepoRelativeProjectDir.Contains('perf'))">true</IsBenchmarkProject>
     <IsTestProject Condition="$(MSBuildProjectName.EndsWith('Tests')) OR $(MSBuildProjectName.EndsWith('.Test'))">true</IsTestProject>
     <IsTestProject Condition="$(MSBuildProjectName.EndsWith('Tests')) OR $(MSBuildProjectName.EndsWith('.Test'))">true</IsTestProject>
     <IsTestAssetProject Condition="$(RepoRelativeProjectDir.Contains('testassets'))">true</IsTestAssetProject>
     <IsTestAssetProject Condition="$(RepoRelativeProjectDir.Contains('testassets'))">true</IsTestAssetProject>
     <IsSampleProject Condition="$(RepoRelativeProjectDir.Contains('sample'))">true</IsSampleProject>
     <IsSampleProject Condition="$(RepoRelativeProjectDir.Contains('sample'))">true</IsSampleProject>
@@ -104,5 +104,6 @@
   <Import Project="eng\targets\CSharp.Common.props"  Condition="'$(MSBuildProjectExtension)' == '.csproj'" />
   <Import Project="eng\targets\CSharp.Common.props"  Condition="'$(MSBuildProjectExtension)' == '.csproj'" />
   <Import Project="eng\targets\SharedFx.Common.props"  Condition="'$(MSBuildProjectExtension)' == '.shfxproj'" />
   <Import Project="eng\targets\SharedFx.Common.props"  Condition="'$(MSBuildProjectExtension)' == '.shfxproj'" />
   <Import Project="eng\targets\Wix.Common.props"  Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
   <Import Project="eng\targets\Wix.Common.props"  Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
+  <Import Project="eng\targets\Npm.Common.props"  Condition="'$(MSBuildProjectExtension)' == '.npmproj'" />
 
 
 </Project>
 </Project>

+ 1 - 0
Directory.Build.targets

@@ -63,4 +63,5 @@
   <Import Project="eng\targets\FSharp.Common.targets"  Condition="'$(MSBuildProjectExtension)' == '.fsproj'" />
   <Import Project="eng\targets\FSharp.Common.targets"  Condition="'$(MSBuildProjectExtension)' == '.fsproj'" />
   <Import Project="eng\targets\SharedFx.Common.targets"  Condition="'$(MSBuildProjectExtension)' == '.shfxproj'" />
   <Import Project="eng\targets\SharedFx.Common.targets"  Condition="'$(MSBuildProjectExtension)' == '.shfxproj'" />
   <Import Project="eng\targets\Wix.Common.targets"  Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
   <Import Project="eng\targets\Wix.Common.targets"  Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
+  <Import Project="eng\targets\Npm.Common.targets"  Condition="'$(MSBuildProjectExtension)' == '.npmproj'" />
 </Project>
 </Project>

+ 0 - 1
build/buildorder.props

@@ -10,7 +10,6 @@
     <RepositoryBuildOrder Include="EntityFrameworkCore" Order="8" />
     <RepositoryBuildOrder Include="EntityFrameworkCore" Order="8" />
     <RepositoryBuildOrder Include="MvcPrecompilation" Order="15" RootPath="$(RepositoryRoot)src\MvcPrecompilation\" />
     <RepositoryBuildOrder Include="MvcPrecompilation" Order="15" RootPath="$(RepositoryRoot)src\MvcPrecompilation\" />
     <RepositoryBuildOrder Include="Scaffolding" Order="15" />
     <RepositoryBuildOrder Include="Scaffolding" Order="15" />
-    <RepositoryBuildOrder Include="SignalR" Order="16" RootPath="$(RepositoryRoot)src\SignalR\" />
     <RepositoryBuildOrder Include="AuthSamples" Order="16" RootPath="$(RepositoryRoot)src\AuthSamples\" />
     <RepositoryBuildOrder Include="AuthSamples" Order="16" RootPath="$(RepositoryRoot)src\AuthSamples\" />
     <RepositoryBuildOrder Include="Templating" Order="17" RootPath="$(RepositoryRoot)src\Templating\" />
     <RepositoryBuildOrder Include="Templating" Order="17" RootPath="$(RepositoryRoot)src\Templating\" />
   </ItemGroup>
   </ItemGroup>

+ 3 - 3
build/dependencies.props

@@ -29,7 +29,7 @@
     <MicrosoftAspNetCoreBuildToolsApiCheckPackageVersion>$(KoreBuildVersion)</MicrosoftAspNetCoreBuildToolsApiCheckPackageVersion>
     <MicrosoftAspNetCoreBuildToolsApiCheckPackageVersion>$(KoreBuildVersion)</MicrosoftAspNetCoreBuildToolsApiCheckPackageVersion>
     <InternalAspNetCoreSdkPackageVersion>$(KoreBuildVersion)</InternalAspNetCoreSdkPackageVersion>
     <InternalAspNetCoreSdkPackageVersion>$(KoreBuildVersion)</InternalAspNetCoreSdkPackageVersion>
     <InternalAspNetCoreSiteExtensionSdkPackageVersion>$(KoreBuildVersion)</InternalAspNetCoreSiteExtensionSdkPackageVersion>
     <InternalAspNetCoreSiteExtensionSdkPackageVersion>$(KoreBuildVersion)</InternalAspNetCoreSiteExtensionSdkPackageVersion>
-    <InternalAspNetCoreSdkPackageVersion Condition=" '$(KoreBuildVersion)' == '' ">2.2.1-build-20190104.5</InternalAspNetCoreSdkPackageVersion>
+    <InternalAspNetCoreSdkPackageVersion Condition=" '$(KoreBuildVersion)' == '' ">2.2.1-build-20190110.1</InternalAspNetCoreSdkPackageVersion>
   </PropertyGroup>
   </PropertyGroup>
 
 
   <!-- These are package versions that should not be overridden or updated by automation. -->
   <!-- These are package versions that should not be overridden or updated by automation. -->
@@ -175,7 +175,7 @@
     <MicrosoftNETCoreDotNetAppHost21PackageVersion>$(MicrosoftNETCoreApp21PackageVersion)</MicrosoftNETCoreDotNetAppHost21PackageVersion>
     <MicrosoftNETCoreDotNetAppHost21PackageVersion>$(MicrosoftNETCoreApp21PackageVersion)</MicrosoftNETCoreDotNetAppHost21PackageVersion>
     <MicrosoftNETCoreWindowsApiSetsPackageVersion>1.0.1</MicrosoftNETCoreWindowsApiSetsPackageVersion>
     <MicrosoftNETCoreWindowsApiSetsPackageVersion>1.0.1</MicrosoftNETCoreWindowsApiSetsPackageVersion>
     <MicrosoftNETFrameworkReferenceAssembliesPackageVersion>1.0.0-alpha-004</MicrosoftNETFrameworkReferenceAssembliesPackageVersion>
     <MicrosoftNETFrameworkReferenceAssembliesPackageVersion>1.0.0-alpha-004</MicrosoftNETFrameworkReferenceAssembliesPackageVersion>
-    <MicrosoftNETTestSdkPackageVersion>15.6.1</MicrosoftNETTestSdkPackageVersion>
+    <MicrosoftNETTestSdkPackageVersion>15.9.0</MicrosoftNETTestSdkPackageVersion>
     <MicrosoftOwinSecurityCookiesPackageVersion>3.0.1</MicrosoftOwinSecurityCookiesPackageVersion>
     <MicrosoftOwinSecurityCookiesPackageVersion>3.0.1</MicrosoftOwinSecurityCookiesPackageVersion>
     <MicrosoftOwinSecurityPackageVersion>3.0.1</MicrosoftOwinSecurityPackageVersion>
     <MicrosoftOwinSecurityPackageVersion>3.0.1</MicrosoftOwinSecurityPackageVersion>
     <MicrosoftOwinTestingPackageVersion>3.0.1</MicrosoftOwinTestingPackageVersion>
     <MicrosoftOwinTestingPackageVersion>3.0.1</MicrosoftOwinTestingPackageVersion>
@@ -273,7 +273,7 @@
     <XunitCorePackageVersion>2.3.1</XunitCorePackageVersion>
     <XunitCorePackageVersion>2.3.1</XunitCorePackageVersion>
     <XunitExtensibilityCorePackageVersion>2.3.1</XunitExtensibilityCorePackageVersion>
     <XunitExtensibilityCorePackageVersion>2.3.1</XunitExtensibilityCorePackageVersion>
     <XunitExtensibilityExecutionPackageVersion>2.3.1</XunitExtensibilityExecutionPackageVersion>
     <XunitExtensibilityExecutionPackageVersion>2.3.1</XunitExtensibilityExecutionPackageVersion>
-    <XunitPackageVersion>2.3.1</XunitPackageVersion>
+    <XunitPackageVersion>2.4.0</XunitPackageVersion>
     <XunitRunnerVisualStudioPackageVersion>2.4.0</XunitRunnerVisualStudioPackageVersion>
     <XunitRunnerVisualStudioPackageVersion>2.4.0</XunitRunnerVisualStudioPackageVersion>
   </PropertyGroup>
   </PropertyGroup>
 </Project>
 </Project>

+ 20 - 5
build/repo.props

@@ -64,7 +64,9 @@
                       $(RepositoryRoot)src\Middleware\WebSockets\samples\**\*.csproj;
                       $(RepositoryRoot)src\Middleware\WebSockets\samples\**\*.csproj;
                       $(RepositoryRoot)src\Middleware\NodeServices.Sockets\**\*.csproj;
                       $(RepositoryRoot)src\Middleware\NodeServices.Sockets\**\*.csproj;
                       $(RepositoryRoot)src\Tools\dotnet-watch\test\TestProjects\**\*.csproj;
                       $(RepositoryRoot)src\Tools\dotnet-watch\test\TestProjects\**\*.csproj;
-                      $(RepositoryRoot)src\Razor\Razor.Design\test\testassets\**\*.*proj
+                      $(RepositoryRoot)src\Razor\Razor.Design\test\testassets\**\*.*proj;
+                      $(RepositoryRoot)src\SignalR\clients\cpp\**\*.*proj;
+                      $(RepositoryRoot)src\SignalR\clients\ts\**\node_modules\**\*.*proj;
                       " />
                       " />
   </ItemGroup>
   </ItemGroup>
 
 
@@ -72,7 +74,9 @@
     <!-- Project selection can be overridden on the command line by passing in -projects -->
     <!-- Project selection can be overridden on the command line by passing in -projects -->
     <When Condition="'$(Projects)' != ''">
     <When Condition="'$(Projects)' != ''">
       <ItemGroup>
       <ItemGroup>
-        <ProjectToBuild Include="$(Projects)" Exclude="@(ProjectToExclude)" />
+        <ProjectToBuild Include="$(Projects)" Exclude="@(ProjectToExclude)">
+          <RestoreInParallel Condition="'%(Extension)' == '.npmproj'">false</RestoreInParallel>
+        </ProjectToBuild>
       </ItemGroup>
       </ItemGroup>
     </When>
     </When>
     <Otherwise>
     <Otherwise>
@@ -81,14 +85,21 @@
 
 
         <ProjectToExclude Include="@(SamplesProject)" Condition="'$(BuildSamples)' == 'false' "/>
         <ProjectToExclude Include="@(SamplesProject)" Condition="'$(BuildSamples)' == 'false' "/>
 
 
-        <NpmProjectDirectory Include="$(RepositoryRoot)src\Middleware\CORS\test\FunctionalTests\" />
-
         <ProjectToBuild Condition=" '$(OS)' == 'Windows_NT' AND '$(MSBuildRuntimeType)' != 'Core' " Include="$(RepositoryRoot)src\Servers\**\*.vcxproj">
         <ProjectToBuild Condition=" '$(OS)' == 'Windows_NT' AND '$(MSBuildRuntimeType)' != 'Core' " Include="$(RepositoryRoot)src\Servers\**\*.vcxproj">
           <!-- Required to prevent triggering double-builds. See eng\targets\ResolveIisReferences.targets for details. -->
           <!-- Required to prevent triggering double-builds. See eng\targets\ResolveIisReferences.targets for details. -->
           <AdditionalProperties Condition="'$(SharedFxRid)' == 'win-x64'">Platform=x64</AdditionalProperties>
           <AdditionalProperties Condition="'$(SharedFxRid)' == 'win-x64'">Platform=x64</AdditionalProperties>
           <AdditionalProperties Condition="'$(SharedFxRid)' == 'win-x86'">Platform=x86</AdditionalProperties>
           <AdditionalProperties Condition="'$(SharedFxRid)' == 'win-x86'">Platform=x86</AdditionalProperties>
         </ProjectToBuild>
         </ProjectToBuild>
 
 
+        <ProjectToBuild Condition="'$(SkipNpm)' != 'true'"
+                        Include="$(RepositoryRoot)src\SignalR\**\*.npmproj"
+                        RestoreInParallel="false"
+                        Exclude="@(ProjectToExclude)" />
+
+        <ProjectToBuild Condition="'$(SkipJavaClient)' != 'true'"
+                        Include="$(RepositoryRoot)src\SignalR\**\*.javaproj"
+                        Exclude="@(ProjectToExclude)" />
+
         <ProjectToBuild Include="
         <ProjectToBuild Include="
                           $(RepositoryRoot)src\DefaultBuilder\**\*.*proj;
                           $(RepositoryRoot)src\DefaultBuilder\**\*.*proj;
                           $(RepositoryRoot)src\Features\JsonPatch\**\*.*proj;
                           $(RepositoryRoot)src\Features\JsonPatch\**\*.*proj;
@@ -108,11 +119,15 @@
                           $(RepositoryRoot)src\Mvc\**\*.*proj;
                           $(RepositoryRoot)src\Mvc\**\*.*proj;
                           $(RepositoryRoot)src\Azure\**\*.*proj;
                           $(RepositoryRoot)src\Azure\**\*.*proj;
                           $(RepositoryRoot)src\MusicStore\**\*.*proj;
                           $(RepositoryRoot)src\MusicStore\**\*.*proj;
+                          $(RepositoryRoot)src\SignalR\**\*.csproj;
                           "
                           "
                         Exclude="
                         Exclude="
                           @(ProjectToExclude);
                           @(ProjectToExclude);
+                          $(RepositoryRoot)**\node_modules\**\*;
                           $(RepositoryRoot)**\bin\**\*;
                           $(RepositoryRoot)**\bin\**\*;
-                          $(RepositoryRoot)**\obj\**\*;" />
+                          $(RepositoryRoot)**\obj\**\*;">
+          <RestoreInParallel Condition="'%(Extension)' == '.npmproj'">false</RestoreInParallel>
+        </ProjectToBuild>
       </ItemGroup>
       </ItemGroup>
     </Otherwise>
     </Otherwise>
   </Choose>
   </Choose>

+ 0 - 8
build/repo.targets

@@ -18,7 +18,6 @@
     <PrepareDependsOn>SetTeamCityBuildNumberToVersion;$(PrepareDependsOn)</PrepareDependsOn>
     <PrepareDependsOn>SetTeamCityBuildNumberToVersion;$(PrepareDependsOn)</PrepareDependsOn>
     <PrepareDependsOn Condition="'$(_ProjectsOnly)' != 'true'">$(PrepareDependsOn);VerifyPackageArtifactConfig;VerifyExternalDependencyConfig;PrepareOutputPaths</PrepareDependsOn>
     <PrepareDependsOn Condition="'$(_ProjectsOnly)' != 'true'">$(PrepareDependsOn);VerifyPackageArtifactConfig;VerifyExternalDependencyConfig;PrepareOutputPaths</PrepareDependsOn>
     <CleanDependsOn>$(CleanDependsOn);CleanArtifacts;CleanRepoArtifacts</CleanDependsOn>
     <CleanDependsOn>$(CleanDependsOn);CleanArtifacts;CleanRepoArtifacts</CleanDependsOn>
-    <RestoreDependsOn Condition=" '$(SkipNpm)' != 'true' ">$(RestoreDependsOn);RestoreNpm</RestoreDependsOn>
     <RestoreDependsOn>$(RestoreDependsOn);InstallDotNet;RestoreProjects</RestoreDependsOn>
     <RestoreDependsOn>$(RestoreDependsOn);InstallDotNet;RestoreProjects</RestoreDependsOn>
     <CompileDependsOn>$(CompileDependsOn);BuildProjects;PackSharedSources</CompileDependsOn>
     <CompileDependsOn>$(CompileDependsOn);BuildProjects;PackSharedSources</CompileDependsOn>
     <CompileDependsOn Condition="'$(_ProjectsOnly)' != 'true'">$(CompileDependsOn);PackProjects;BuildRepositories;BuildSharedFx</CompileDependsOn>
     <CompileDependsOn Condition="'$(_ProjectsOnly)' != 'true'">$(CompileDependsOn);PackProjects;BuildRepositories;BuildSharedFx</CompileDependsOn>
@@ -32,13 +31,6 @@
     <GetArtifactInfoDependsOn  Condition="'$(_ProjectsOnly)' != 'true'">$(GetArtifactInfoDependsOn);ResolveRepoInfo</GetArtifactInfoDependsOn>
     <GetArtifactInfoDependsOn  Condition="'$(_ProjectsOnly)' != 'true'">$(GetArtifactInfoDependsOn);ResolveRepoInfo</GetArtifactInfoDependsOn>
   </PropertyGroup>
   </PropertyGroup>
 
 
-  <Target Name="RestoreNpm" Condition="@(NpmProjectDirectory->Count()) != 0">
-    <Message Text="Restoring NPM modules" Importance="high" />
-
-    <!-- Always run `npm ci` because `npm install` has a tendancy to churn package-lock.json for no apparent reason. -->
-    <Exec Command="npm ci" WorkingDirectory="%(NpmProjectDirectory.Identity)" Condition=" '%(NpmProjectDirectory.Identity)' != '' " />
-  </Target>
-
   <Target Name="PrepareOutputPaths">
   <Target Name="PrepareOutputPaths">
     <MakeDir Directories="$(ArtifactsDir);$(BuildDir)" />
     <MakeDir Directories="$(ArtifactsDir);$(BuildDir)" />
   </Target>
   </Target>

+ 0 - 1
build/submodules.props

@@ -46,6 +46,5 @@
 
 
   <ItemGroup>
   <ItemGroup>
     <ShippedRepository Include="MvcPrecompilation" RootPath="$(RepositoryRoot)src\MvcPrecompilation\"/>
     <ShippedRepository Include="MvcPrecompilation" RootPath="$(RepositoryRoot)src\MvcPrecompilation\"/>
-    <ShippedRepository Include="SignalR" RootPath="$(RepositoryRoot)src\SignalR\" />
   </ItemGroup>
   </ItemGroup>
 </Project>
 </Project>

+ 0 - 2
docs/BuildFromSource.md

@@ -3,8 +3,6 @@ Build ASP.NET Core from Source
 
 
 Building ASP.NET Core from source allows you tweak and customize ASP.NET Core, and to contribute your improvements back to the project.
 Building ASP.NET Core from source allows you tweak and customize ASP.NET Core, and to contribute your improvements back to the project.
 
 
-:warning: We are currently in the middle of restructing our source code. These instructions will likely change rapidly during November and December 2018.
-
 See https://github.com/aspnet/AspNetCore/labels/area-infrastructure for known issues and to track ongoing work.
 See https://github.com/aspnet/AspNetCore/labels/area-infrastructure for known issues and to track ongoing work.
 
 
 ## Install pre-requistes
 ## Install pre-requistes

+ 155 - 0
eng/Baseline.Designer.props

@@ -464,6 +464,51 @@
     <BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[2.2.0, )" />
     <BaselinePackageReference Include="Microsoft.AspNetCore.Http.Features" Version="[2.2.0, )" />
     <BaselinePackageReference Include="System.Text.Encodings.Web" Version="[4.5.0, )" />
     <BaselinePackageReference Include="System.Text.Encodings.Web" Version="[4.5.0, )" />
   </ItemGroup>
   </ItemGroup>
+  <!-- Package: Microsoft.AspNetCore.Http.Connections.Client-->
+  <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Client' ">
+    <BaselinePackageVersion>1.1.0</BaselinePackageVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Client' AND '$(TargetFramework)' == 'netcoreapp2.2' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Common" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[2.2.0, )" />
+  </ItemGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Client' AND '$(TargetFramework)' == 'netstandard2.0' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Common" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[2.2.0, )" />
+  </ItemGroup>
+  <!-- Package: Microsoft.AspNetCore.Http.Connections.Common-->
+  <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Common' ">
+    <BaselinePackageVersion>1.1.0</BaselinePackageVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections.Common' AND '$(TargetFramework)' == 'netstandard2.0' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Newtonsoft.Json" Version="[11.0.2, )" />
+    <BaselinePackageReference Include="System.Buffers" Version="[4.5.0, )" />
+  </ItemGroup>
+  <!-- Package: Microsoft.AspNetCore.Http.Connections-->
+  <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections' ">
+    <BaselinePackageVersion>1.1.0</BaselinePackageVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections' AND '$(TargetFramework)' == 'netcoreapp2.2' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Common" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Authorization.Policy" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Http" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Routing" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.WebSockets" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Newtonsoft.Json" Version="[11.0.2, )" />
+    <BaselinePackageReference Include="System.Security.Principal.Windows" Version="[4.5.0, )" />
+  </ItemGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Connections' AND '$(TargetFramework)' == 'netstandard2.0' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Common" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Authorization.Policy" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Http" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Routing" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.WebSockets" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Newtonsoft.Json" Version="[11.0.2, )" />
+    <BaselinePackageReference Include="System.Security.Principal.Windows" Version="[4.5.0, )" />
+  </ItemGroup>
   <!-- Package: Microsoft.AspNetCore.Http.Extensions-->
   <!-- Package: Microsoft.AspNetCore.Http.Extensions-->
   <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Extensions' ">
   <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Extensions' ">
     <BaselinePackageVersion>2.2.0</BaselinePackageVersion>
     <BaselinePackageVersion>2.2.0</BaselinePackageVersion>
@@ -1033,6 +1078,116 @@
     <BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[2.2.0, )" />
     <BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[2.2.0, )" />
     <BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[2.2.0, )" />
     <BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[2.2.0, )" />
   </ItemGroup>
   </ItemGroup>
+  <!-- Package: Microsoft.AspNetCore.SignalR.Client.Core-->
+  <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client.Core' ">
+    <BaselinePackageVersion>1.1.0</BaselinePackageVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client.Core' AND '$(TargetFramework)' == 'netstandard2.0' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Microsoft.Extensions.Logging" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="System.Threading.Channels" Version="[4.5.0, )" />
+  </ItemGroup>
+  <!-- Package: Microsoft.AspNetCore.SignalR.Client-->
+  <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client' ">
+    <BaselinePackageVersion>1.1.0</BaselinePackageVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Client' AND '$(TargetFramework)' == 'netstandard2.0' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections.Client" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Client.Core" Version="[1.1.0, )" />
+  </ItemGroup>
+  <!-- Package: Microsoft.AspNetCore.SignalR.Common-->
+  <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Common' ">
+    <BaselinePackageVersion>1.1.0</BaselinePackageVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Common' AND '$(TargetFramework)' == 'netcoreapp2.2' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Newtonsoft.Json" Version="[11.0.2, )" />
+    <BaselinePackageReference Include="System.Buffers" Version="[4.5.0, )" />
+  </ItemGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Common' AND '$(TargetFramework)' == 'netstandard2.0' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Connections.Abstractions" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Newtonsoft.Json" Version="[11.0.2, )" />
+    <BaselinePackageReference Include="System.Buffers" Version="[4.5.0, )" />
+  </ItemGroup>
+  <!-- Package: Microsoft.AspNetCore.SignalR.Core-->
+  <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Core' ">
+    <BaselinePackageVersion>1.1.0</BaselinePackageVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Core' AND '$(TargetFramework)' == 'netstandard2.0' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Authorization" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="System.Reflection.Emit" Version="[4.3.0, )" />
+    <BaselinePackageReference Include="System.Threading.Channels" Version="[4.5.0, )" />
+  </ItemGroup>
+  <!-- Package: Microsoft.AspNetCore.SignalR.Protocols.Json-->
+  <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.Json' ">
+    <BaselinePackageVersion>1.1.0</BaselinePackageVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.Json' AND '$(TargetFramework)' == 'netstandard2.0' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Newtonsoft.Json" Version="[11.0.2, )" />
+  </ItemGroup>
+  <!-- Package: Microsoft.AspNetCore.SignalR.Protocols.MessagePack-->
+  <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.MessagePack' ">
+    <BaselinePackageVersion>1.1.0</BaselinePackageVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Protocols.MessagePack' AND '$(TargetFramework)' == 'netstandard2.0' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="MessagePack" Version="[1.7.3.4, )" />
+  </ItemGroup>
+  <!-- Package: Microsoft.AspNetCore.SignalR.Redis-->
+  <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Redis' ">
+    <BaselinePackageVersion>1.1.0</BaselinePackageVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Redis' AND '$(TargetFramework)' == 'netstandard2.0' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Core" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="MessagePack" Version="[1.7.3.4, )" />
+    <BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="StackExchange.Redis.StrongName" Version="[1.2.6, )" />
+  </ItemGroup>
+  <!-- Package: Microsoft.AspNetCore.SignalR.Specification.Tests-->
+  <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Specification.Tests' ">
+    <BaselinePackageVersion>1.1.0</BaselinePackageVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Specification.Tests' AND '$(TargetFramework)' == 'net461' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Core" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="xunit.assert" Version="[2.3.1, )" />
+    <BaselinePackageReference Include="xunit.extensibility.core" Version="[2.3.1, )" />
+  </ItemGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.Specification.Tests' AND '$(TargetFramework)' == 'netcoreapp2.2' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Core" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="xunit.assert" Version="[2.3.1, )" />
+    <BaselinePackageReference Include="xunit.extensibility.core" Version="[2.3.1, )" />
+  </ItemGroup>
+  <!-- Package: Microsoft.AspNetCore.SignalR.StackExchangeRedis-->
+  <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.StackExchangeRedis' ">
+    <BaselinePackageVersion>1.1.0</BaselinePackageVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR.StackExchangeRedis' AND '$(TargetFramework)' == 'netstandard2.0' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Core" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="MessagePack" Version="[1.7.3.4, )" />
+    <BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[2.2.0, )" />
+    <BaselinePackageReference Include="StackExchange.Redis" Version="[2.0.513, )" />
+  </ItemGroup>
+  <!-- Package: Microsoft.AspNetCore.SignalR-->
+  <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR' ">
+    <BaselinePackageVersion>1.1.0</BaselinePackageVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SignalR' AND '$(TargetFramework)' == 'netstandard2.0' ">
+    <BaselinePackageReference Include="Microsoft.AspNetCore.Http.Connections" Version="[1.1.0, )" />
+    <BaselinePackageReference Include="Microsoft.AspNetCore.SignalR.Core" Version="[1.1.0, )" />
+  </ItemGroup>
   <!-- Package: Microsoft.AspNetCore.SpaServices.Extensions-->
   <!-- Package: Microsoft.AspNetCore.SpaServices.Extensions-->
   <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SpaServices.Extensions' ">
   <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SpaServices.Extensions' ">
     <BaselinePackageVersion>2.2.0</BaselinePackageVersion>
     <BaselinePackageVersion>2.2.0</BaselinePackageVersion>

+ 13 - 0
eng/Baseline.xml

@@ -56,6 +56,9 @@ build of ASP.NET Core 2.2.x. Update this list when preparing for a new patch.
   <Package Id="Microsoft.AspNetCore.Hosting" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Hosting" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Html.Abstractions" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Html.Abstractions" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
+  <Package Id="Microsoft.AspNetCore.Http.Connections.Client" Version="1.1.0" />
+  <Package Id="Microsoft.AspNetCore.Http.Connections.Common" Version="1.1.0" />
+  <Package Id="Microsoft.AspNetCore.Http.Connections" Version="1.1.0" />
   <Package Id="Microsoft.AspNetCore.Http.Extensions" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Http.Extensions" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Http.Features" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Http.Features" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Http" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Http" Version="2.2.0" />
@@ -108,6 +111,16 @@ build of ASP.NET Core 2.2.x. Update this list when preparing for a new patch.
   <Package Id="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Server.Kestrel" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Server.Kestrel" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Session" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.Session" Version="2.2.0" />
+  <Package Id="Microsoft.AspNetCore.SignalR.Client.Core" Version="1.1.0" />
+  <Package Id="Microsoft.AspNetCore.SignalR.Client" Version="1.1.0" />
+  <Package Id="Microsoft.AspNetCore.SignalR.Common" Version="1.1.0" />
+  <Package Id="Microsoft.AspNetCore.SignalR.Core" Version="1.1.0" />
+  <Package Id="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="1.1.0" />
+  <Package Id="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="1.1.0" />
+  <Package Id="Microsoft.AspNetCore.SignalR.Redis" Version="1.1.0" />
+  <Package Id="Microsoft.AspNetCore.SignalR.Specification.Tests" Version="1.1.0" />
+  <Package Id="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="1.1.0" />
+  <Package Id="Microsoft.AspNetCore.SignalR" Version="1.1.0" />
   <Package Id="Microsoft.AspNetCore.SpaServices.Extensions" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.SpaServices.Extensions" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.SpaServices" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.SpaServices" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />
   <Package Id="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />

+ 20 - 13
eng/Dependencies.props

@@ -49,6 +49,7 @@ and are generated based on the last package release.
     <LatestPackageReference Include="Microsoft.Extensions.Configuration.Json" Version="$(MicrosoftExtensionsConfigurationJsonPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Extensions.Configuration.Json" Version="$(MicrosoftExtensionsConfigurationJsonPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="$(MicrosoftExtensionsConfigurationUserSecretsPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="$(MicrosoftExtensionsConfigurationUserSecretsPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Extensions.Configuration" Version="$(MicrosoftExtensionsConfigurationPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Extensions.Configuration" Version="$(MicrosoftExtensionsConfigurationPackageVersion)" />
+    <LatestPackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Extensions.DependencyInjection" Version="$(MicrosoftExtensionsDependencyInjectionPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Extensions.DependencyInjection" Version="$(MicrosoftExtensionsDependencyInjectionPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Extensions.DependencyModel" Version="$(MicrosoftExtensionsDependencyModelPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Extensions.DependencyModel" Version="$(MicrosoftExtensionsDependencyModelPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Extensions.DiagnosticAdapter" Version="$(MicrosoftExtensionsDiagnosticAdapterPackageVersion)" />
     <LatestPackageReference Include="Microsoft.Extensions.DiagnosticAdapter" Version="$(MicrosoftExtensionsDiagnosticAdapterPackageVersion)" />
@@ -92,19 +93,22 @@ and are generated based on the last package release.
     <LatestPackageReference Include="System.Security.Cryptography.Cng" Version="$(SystemSecurityCryptographyCngPackageVersion)" />
     <LatestPackageReference Include="System.Security.Cryptography.Cng" Version="$(SystemSecurityCryptographyCngPackageVersion)" />
     <LatestPackageReference Include="System.Security.Principal.Windows" Version="$(SystemSecurityPrincipalWindowsPackageVersion)" />
     <LatestPackageReference Include="System.Security.Principal.Windows" Version="$(SystemSecurityPrincipalWindowsPackageVersion)" />
     <LatestPackageReference Include="System.ServiceProcess.ServiceController" Version="$(SystemServiceProcessServiceControllerPackageVersion)" />
     <LatestPackageReference Include="System.ServiceProcess.ServiceController" Version="$(SystemServiceProcessServiceControllerPackageVersion)" />
+    <LatestPackageReference Include="System.Threading.Channels" Version="$(SystemThreadingChannelsPackageVersion)" />
+    <LatestPackageReference Include="System.Threading.Tasks.Extensions" Version="$(SystemThreadingTasksExtensionsPackageVersion)" />
     <LatestPackageReference Include="System.Text.Encodings.Web" Version="$(SystemTextEncodingsWebPackageVersion)" />
     <LatestPackageReference Include="System.Text.Encodings.Web" Version="$(SystemTextEncodingsWebPackageVersion)" />
 
 
   </ItemGroup>
   </ItemGroup>
 
 
   <ItemGroup Label="External dependencies">
   <ItemGroup Label="External dependencies">
     <LatestPackageReference Include="AngleSharp" Version="$(AngleSharpPackageVersion)" />
     <LatestPackageReference Include="AngleSharp" Version="$(AngleSharpPackageVersion)" />
-    <LatestPackageReference Include="BenchmarkDotNet" Version="0.10.13" />
-    <LatestPackageReference Include="FSharp.Core" Version="4.2.1" />
-    <LatestPackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
-    <LatestPackageReference Include="IdentityServer4" Version="$(IdentityServer4PackageVersion)" />
+    <LatestPackageReference Include="BenchmarkDotNet" Version="$(BenchmarkDotNetPackageVersion)" />
+    <LatestPackageReference Include="FSharp.Core" Version="$(FSharpCorePackageVersion)" />
+    <LatestPackageReference Include="Google.ProtoBuf" Version="$(GoogleProtoBufPackageVersion)" />
     <LatestPackageReference Include="IdentityServer4.AspNetIdentity" Version="$(IdentityServer4AspNetIdentityPackageVersion)" />
     <LatestPackageReference Include="IdentityServer4.AspNetIdentity" Version="$(IdentityServer4AspNetIdentityPackageVersion)" />
     <LatestPackageReference Include="IdentityServer4.EntityFramework" Version="$(IdentityServer4EntityFrameworkPackageVersion)" />
     <LatestPackageReference Include="IdentityServer4.EntityFramework" Version="$(IdentityServer4EntityFrameworkPackageVersion)" />
-    <LatestPackageReference Include="Moq" Version="4.10.0" />
+    <LatestPackageReference Include="IdentityServer4" Version="$(IdentityServer4PackageVersion)" />
+    <LatestPackageReference Include="Microsoft.NET.Test.Sdk" Version="$(MicrosoftNETTestSdkPackageVersion)" />
+    <LatestPackageReference Include="Moq" Version="$(MoqPackageVersion)" />
     <!-- This version is required by MSBuild tasks or Visual Studio extensions. -->
     <!-- This version is required by MSBuild tasks or Visual Studio extensions. -->
     <LatestPackageReference Include="Newtonsoft.Json" Version="9.0.1" Condition="'$(UseMSBuildJsonNet)' == 'true'" />
     <LatestPackageReference Include="Newtonsoft.Json" Version="9.0.1" Condition="'$(UseMSBuildJsonNet)' == 'true'" />
     <!-- This version should be used by runtime packages -->
     <!-- This version should be used by runtime packages -->
@@ -113,14 +117,17 @@ and are generated based on the last package release.
     <LatestPackageReference Include="Selenium.WebDriver" Version="3.12.1" />
     <LatestPackageReference Include="Selenium.WebDriver" Version="3.12.1" />
     <LatestPackageReference Include="Serilog.Extensions.Logging" Version="$(SerilogExtensionsLoggingPackageVersion)" />
     <LatestPackageReference Include="Serilog.Extensions.Logging" Version="$(SerilogExtensionsLoggingPackageVersion)" />
     <LatestPackageReference Include="Serilog.Sinks.File" Version="$(SerilogSinksFilePackageVersion)" />
     <LatestPackageReference Include="Serilog.Sinks.File" Version="$(SerilogSinksFilePackageVersion)" />
-    <LatestPackageReference Include="Utf8Json" Version="1.3.7" />
-    <LatestPackageReference Include="xunit.abstractions" Version="2.0.1" />
-    <LatestPackageReference Include="xunit.analyzers" Version="0.10.0" />
-    <LatestPackageReference Include="xunit.assert" Version="2.3.1" />
-    <LatestPackageReference Include="xunit.extensibility.core" Version="2.3.1" />
-    <LatestPackageReference Include="xunit.extensibility.execution" Version="2.3.1" />
-    <LatestPackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
-    <LatestPackageReference Include="xunit" Version="2.4.0" />
+    <LatestPackageReference Include="StackExchange.Redis.StrongName" Version="$(StackExchangeRedisStrongNamePackageVersion)" />
+    <LatestPackageReference Include="StackExchange.Redis" Version="$(StackExchangeRedisPackageVersion)" />
+    <LatestPackageReference Include="System.Reactive.Linq" Version="$(SystemReactiveLinqPackageVersion)" />
+    <LatestPackageReference Include="Utf8Json" Version="$(Utf8JsonPackageVersion)" />
+    <LatestPackageReference Include="xunit.abstractions" Version="$(XunitAbstractionsPackageVersion)" />
+    <LatestPackageReference Include="xunit.analyzers" Version="$(XunitAnalyzersPackageVersion)" />
+    <LatestPackageReference Include="xunit.assert" Version="$(XunitAssertPackageVersion)" />
+    <LatestPackageReference Include="xunit.extensibility.core" Version="$(XunitExtensibilityCorePackageVersion)" />
+    <LatestPackageReference Include="xunit.extensibility.execution" Version="$(XunitExtensibilityExecutionPackageVersion)" />
+    <LatestPackageReference Include="xunit.runner.visualstudio" Version="$(XunitRunnerVisualStudioPackageVersion)" />
+    <LatestPackageReference Include="xunit" Version="$(XunitPackageVersion)" />
   </ItemGroup>
   </ItemGroup>
 
 
 </Project>
 </Project>

+ 13 - 0
eng/ProjectReferences.props

@@ -128,5 +128,18 @@
     <ProjectReferenceProvider Include="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" ProjectPath="$(RepositoryRoot)src\Azure\AzureAD\Authentication.AzureADB2C.UI\src\Microsoft.AspNetCore.Authentication.AzureADB2C.UI.csproj" />
     <ProjectReferenceProvider Include="Microsoft.AspNetCore.Authentication.AzureADB2C.UI" ProjectPath="$(RepositoryRoot)src\Azure\AzureAD\Authentication.AzureADB2C.UI\src\Microsoft.AspNetCore.Authentication.AzureADB2C.UI.csproj" />
     <ProjectReferenceProvider Include="Microsoft.AspNetCore.AzureAppServices.HostingStartup" ProjectPath="$(RepositoryRoot)src\Azure\AzureAppServices.HostingStartup\src\Microsoft.AspNetCore.AzureAppServices.HostingStartup.csproj" />
     <ProjectReferenceProvider Include="Microsoft.AspNetCore.AzureAppServices.HostingStartup" ProjectPath="$(RepositoryRoot)src\Azure\AzureAppServices.HostingStartup\src\Microsoft.AspNetCore.AzureAppServices.HostingStartup.csproj" />
     <ProjectReferenceProvider Include="Microsoft.AspNetCore.AzureAppServicesIntegration" ProjectPath="$(RepositoryRoot)src\Azure\AzureAppServicesIntegration\src\Microsoft.AspNetCore.AzureAppServicesIntegration.csproj" />
     <ProjectReferenceProvider Include="Microsoft.AspNetCore.AzureAppServicesIntegration" ProjectPath="$(RepositoryRoot)src\Azure\AzureAppServicesIntegration\src\Microsoft.AspNetCore.AzureAppServicesIntegration.csproj" />
+    <ProjectReferenceProvider Include="Microsoft.AspNetCore.SignalR.Client.Core" ProjectPath="$(RepositoryRoot)src\SignalR\clients\csharp\Client.Core\src\Microsoft.AspNetCore.SignalR.Client.Core.csproj" />
+    <ProjectReferenceProvider Include="Microsoft.AspNetCore.SignalR.Client" ProjectPath="$(RepositoryRoot)src\SignalR\clients\csharp\Client\src\Microsoft.AspNetCore.SignalR.Client.csproj" />
+    <ProjectReferenceProvider Include="Microsoft.AspNetCore.Http.Connections.Client" ProjectPath="$(RepositoryRoot)src\SignalR\clients\csharp\Http.Connections.Client\src\Microsoft.AspNetCore.Http.Connections.Client.csproj" />
+    <ProjectReferenceProvider Include="Microsoft.AspNetCore.Http.Connections.Common" ProjectPath="$(RepositoryRoot)src\SignalR\common\Http.Connections.Common\src\Microsoft.AspNetCore.Http.Connections.Common.csproj" />
+    <ProjectReferenceProvider Include="Microsoft.AspNetCore.Http.Connections" ProjectPath="$(RepositoryRoot)src\SignalR\common\Http.Connections\src\Microsoft.AspNetCore.Http.Connections.csproj" />
+    <ProjectReferenceProvider Include="Microsoft.AspNetCore.SignalR.Protocols.Json" ProjectPath="$(RepositoryRoot)src\SignalR\common\Protocols.Json\src\Microsoft.AspNetCore.SignalR.Protocols.Json.csproj" />
+    <ProjectReferenceProvider Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" ProjectPath="$(RepositoryRoot)src\SignalR\common\Protocols.MessagePack\src\Microsoft.AspNetCore.SignalR.Protocols.MessagePack.csproj" />
+    <ProjectReferenceProvider Include="Microsoft.AspNetCore.SignalR.Common" ProjectPath="$(RepositoryRoot)src\SignalR\common\SignalR.Common\src\Microsoft.AspNetCore.SignalR.Common.csproj" />
+    <ProjectReferenceProvider Include="Microsoft.AspNetCore.SignalR.Core" ProjectPath="$(RepositoryRoot)src\SignalR\server\Core\src\Microsoft.AspNetCore.SignalR.Core.csproj" />
+    <ProjectReferenceProvider Include="Microsoft.AspNetCore.SignalR.Redis" ProjectPath="$(RepositoryRoot)src\SignalR\server\Redis\src\Microsoft.AspNetCore.SignalR.Redis.csproj" />
+    <ProjectReferenceProvider Include="Microsoft.AspNetCore.SignalR" ProjectPath="$(RepositoryRoot)src\SignalR\server\SignalR\src\Microsoft.AspNetCore.SignalR.csproj" />
+    <ProjectReferenceProvider Include="Microsoft.AspNetCore.SignalR.Specification.Tests" ProjectPath="$(RepositoryRoot)src\SignalR\server\Specification.Tests\src\Microsoft.AspNetCore.SignalR.Specification.Tests.csproj" />
+    <ProjectReferenceProvider Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" ProjectPath="$(RepositoryRoot)src\SignalR\server\StackExchangeRedis\src\Microsoft.AspNetCore.SignalR.StackExchangeRedis.csproj" />
   </ItemGroup>
   </ItemGroup>
 </Project>
 </Project>

+ 28 - 2
eng/scripts/CodeCheck.ps1

@@ -15,11 +15,20 @@ $repoRoot = Resolve-Path "$PSScriptRoot/../../"
 
 
 [string[]] $errors = @()
 [string[]] $errors = @()
 
 
+function LogError([string]$message) {
+    Write-Host -f Red "error: $message"
+    $script:errors += $message
+}
+
 try {
 try {
     #
     #
     # Solutions
     # Solutions
     #
     #
 
 
+    if ($ci) {
+        & $repoRoot/build.cmd /t:InstallDotNet
+    }
+
     Write-Host "Checking that solutions are up to date"
     Write-Host "Checking that solutions are up to date"
 
 
     Get-ChildItem "$repoRoot/*.sln" -Recurse | % {
     Get-ChildItem "$repoRoot/*.sln" -Recurse | % {
@@ -31,7 +40,7 @@ try {
             | % {
             | % {
                 $proj = Join-Path $slnDir $_
                 $proj = Join-Path $slnDir $_
                 if (-not (Test-Path $proj)) {
                 if (-not (Test-Path $proj)) {
-                    $errors += "Missing project. Solution references a project which does not exist: $proj. [$sln] "
+                    LogError "Missing project. Solution references a project which does not exist: $proj. [$sln] "
                 }
                 }
             }
             }
         }
         }
@@ -42,6 +51,7 @@ try {
 
 
     Write-Host "Re-running code generation"
     Write-Host "Re-running code generation"
 
 
+    Write-Host "Re-generating ProjectReference.props"
     Invoke-Block {
     Invoke-Block {
         [string[]] $generateArgs = @()
         [string[]] $generateArgs = @()
         if ($ci) {
         if ($ci) {
@@ -50,16 +60,32 @@ try {
         & $repoRoot/build.cmd /t:GenerateProjectList @generateArgs
         & $repoRoot/build.cmd /t:GenerateProjectList @generateArgs
     }
     }
 
 
+    Write-Host "Re-generating package baselines"
+    $dotnet = 'dotnet'
+    if ($ci) {
+        $dotnet = "$repoRoot/.dotnet/x64/dotnet.exe"
+    }
+    Invoke-Block {
+        & $dotnet run -p "$repoRoot/eng/tools/BaselineGenerator/"
+    }
+
     Write-Host "git diff"
     Write-Host "git diff"
     & git diff --ignore-space-at-eol --exit-code
     & git diff --ignore-space-at-eol --exit-code
     if ($LastExitCode -ne 0) {
     if ($LastExitCode -ne 0) {
         $status = git status -s | Out-String
         $status = git status -s | Out-String
         $status = $status -replace "`n","`n    "
         $status = $status -replace "`n","`n    "
-        $errors += "Generated code is not up to date."
+        LogError "Generated code is not up to date."
     }
     }
 }
 }
 finally {
 finally {
+    Write-Host ""
+    Write-Host "Summary:"
+    Write-Host ""
+    Write-Host "   $($errors.Length) error(s)"
+    Write-Host ""
+
     foreach ($err in $errors) {
     foreach ($err in $errors) {
+
         Write-Host -f Red "error : $err"
         Write-Host -f Red "error : $err"
     }
     }
 
 

+ 7 - 0
eng/targets/Npm.Common.props

@@ -0,0 +1,7 @@
+<Project>
+  <PropertyGroup>
+    <NpmTestArgs>test</NpmTestArgs>
+    <Configuration Condition="'$(Configuration)' == '' AND '$(CI)' == 'true'">Release</Configuration>
+    <Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
+  </PropertyGroup>
+</Project>

+ 84 - 0
eng/targets/Npm.Common.targets

@@ -0,0 +1,84 @@
+<Project DefaultTargets="Build" InitialTargets="_CheckForInvalidConfiguration">
+
+  <PropertyGroup>
+    <NormalizedPackageId>$(PackageId.Replace('@','').Replace('/','-'))</NormalizedPackageId>
+    <PackageFileName>$(NormalizedPackageId)-$(PackageVersion).tgz</PackageFileName>
+    <PackageJson>$(MSBuildProjectDirectory)\package.json</PackageJson>
+    <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">$(MSBuildProjectDirectory)\obj\</BaseIntermediateOutputPath>
+    <IntermediateOutputPath>$([MSBuild]::NormalizeDirectory('$(BaseIntermediateOutputPath)'))$(Configuration)\</IntermediateOutputPath>
+  </PropertyGroup>
+
+  <Target Name="_CheckForInvalidConfiguration">
+    <Error Text="Missing expected property: PackageId" Condition="'$(IsPackable)' != 'false' and '$(PackageId)' == ''" />
+  </Target>
+
+  <Target Name="Restore">
+    <Message Importance="High" Text="Running npm install on $(MSBuildProjectFullPath)" />
+    <Exec Command="npm ci" Condition="'$(CI)' == 'true'" />
+    <Exec Command="npm install --no-optional" Condition="'$(CI)' != 'true'" />
+  </Target>
+
+  <Target Name="PrepareForBuild">
+    <MakeDir Directories="$(IntermediateOutputPath);$(PackageOutputPath)"  />
+  </Target>
+
+  <Target Name="ResolveProjectReferences">
+    <MSBuild Projects="@(ProjectReference)"
+             BuildInParallel="true" />
+  </Target>
+
+  <Target Name="Build" DependsOnTargets="PrepareForBuild;ResolveProjectReferences">
+    <Exec Command="npm run build" IgnoreStandardErrorWarningFormat="true" Condition="'$(IsBuildable)' != 'false'" />
+  </Target>
+
+  <PropertyGroup>
+    <PackDependsOn>
+      $(PackDependsOn);
+      PrepareForBuild
+    </PackDependsOn>
+    <PackDependsOn Condition="'$(NoBuild)' != 'true'">
+      $(PackDependsOn);
+      Build
+    </PackDependsOn>
+  </PropertyGroup>
+
+  <Target Name="Pack" Condition="'$(IsPackable)' == 'true'" DependsOnTargets="$(PackDependsOn)">
+    <PropertyGroup>
+      <_BackupPackageJson>$(IntermediateOutputPath)$(MSBuildProjectName).package.json.bak</_BackupPackageJson>
+      <_PackageTargetPath>$(MSBuildProjectDirectory)\$(PackageFileName)</_PackageTargetPath>
+    </PropertyGroup>
+
+    <Copy SourceFiles="$(PackageJson)" DestinationFiles="$(_BackupPackageJson)" />
+
+    <Exec Command="npm --no-git-tag-version --allow-same-version version $(PackageVersion)" StandardOutputImportance="Normal" StandardErrorImportance="Normal" />
+    <Exec Command="npm pack" StandardOutputImportance="Normal" StandardErrorImportance="Normal" />
+
+    <Move SourceFiles="$(_PackageTargetPath)" DestinationFolder="$(PackageOutputPath)" />
+    <Message Importance="High" Text="$(MSBuildProjectName) -> $(_PackageTargetPath)" />
+
+    <CallTarget Targets="_RestoreBackupPackageJsonFile" />
+    <OnError ExecuteTargets="_RestoreBackupPackageJsonFile" />
+  </Target>
+
+  <Target Name="_RestoreBackupPackageJsonFile">
+    <Move SourceFiles="$(_BackupPackageJson)" DestinationFiles="$(PackageJson)" />
+  </Target>
+
+  <Target Name="Test" Condition="'$(IsTestProject)' == 'true'">
+    <Message Importance="High" Text="Running npm tests for $(MSBuildProjectName)" />
+    <Exec Command="npm $(NpmTestArgs)" IgnoreStandardErrorWarningFormat="true" />
+  </Target>
+
+  <Target Name="GetArtifactInfo" Condition="'$(IsPackable)' == 'true'">
+    <ItemGroup>
+      <ArtifactInfo Include="$(TargetPath)" >
+        <ArtifactType>NpmPackage</ArtifactType>
+        <PackageId>$(PackageId)</PackageId>
+        <Version>$(PackageVersion)</Version>
+      </ArtifactInfo>
+
+      <FilesToExcludeFromSigning Include="$(TargetPath)" />
+    </ItemGroup>
+  </Target>
+
+</Project>

+ 2 - 2
global.json

@@ -1,8 +1,8 @@
 {
 {
     "sdk": {
     "sdk": {
-        "version": "2.2.100"
+        "version": "2.2.102"
     },
     },
     "msbuild-sdks": {
     "msbuild-sdks": {
-        "Internal.AspNetCore.Sdk": "2.2.1-build-20190104.5"
+        "Internal.AspNetCore.Sdk": "2.2.1-build-20190110.1"
     }
     }
 }
 }

+ 2 - 2
korebuild-lock.txt

@@ -1,2 +1,2 @@
-version:2.2.1-build-20190104.5
-commithash:abf5766bd636c29b089ea2995ada30de00d563ff
+version:2.2.1-build-20190110.1
+commithash:f4ebd797fd15484869312b139fdd7e3a115d23bb

+ 1 - 8
src/AzureIntegration/AzureIntegration.sln

@@ -1,4 +1,4 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
+Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 15
 # Visual Studio 15
 VisualStudioVersion = 15.0.27016.1
 VisualStudioVersion = 15.0.27016.1
 MinimumVisualStudioVersion = 15.0.26730.03
 MinimumVisualStudioVersion = 15.0.26730.03
@@ -28,8 +28,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.AzureA
 EndProject
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Web.Xdt.Extensions.Tests", "test\Microsoft.Web.Xdt.Extensions.Tests\Microsoft.Web.Xdt.Extensions.Tests.csproj", "{809AEE05-1B28-4E31-8959-776B249BD725}"
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Web.Xdt.Extensions.Tests", "test\Microsoft.Web.Xdt.Extensions.Tests\Microsoft.Web.Xdt.Extensions.Tests.csproj", "{809AEE05-1B28-4E31-8959-776B249BD725}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.AzureAppServices.SiteExtension.Tests", "test\Microsoft.AspNetCore.AzureAppServices.SiteExtension.Tests\Microsoft.AspNetCore.AzureAppServices.SiteExtension.Tests.csproj", "{491A857A-3529-4375-985D-D748F9F01476}"
-EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Runtime.SiteExtension", "extensions\Microsoft.AspNetCore.Runtime.SiteExtension\Microsoft.AspNetCore.Runtime.SiteExtension.csproj", "{E1E9BC7A-6951-4B60-8DFB-DBB9AC3CDEB0}"
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Runtime.SiteExtension", "extensions\Microsoft.AspNetCore.Runtime.SiteExtension\Microsoft.AspNetCore.Runtime.SiteExtension.csproj", "{E1E9BC7A-6951-4B60-8DFB-DBB9AC3CDEB0}"
 EndProject
 EndProject
 Global
 Global
@@ -54,10 +52,6 @@ Global
 		{809AEE05-1B28-4E31-8959-776B249BD725}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{809AEE05-1B28-4E31-8959-776B249BD725}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{809AEE05-1B28-4E31-8959-776B249BD725}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{809AEE05-1B28-4E31-8959-776B249BD725}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{809AEE05-1B28-4E31-8959-776B249BD725}.Release|Any CPU.Build.0 = Release|Any CPU
 		{809AEE05-1B28-4E31-8959-776B249BD725}.Release|Any CPU.Build.0 = Release|Any CPU
-		{491A857A-3529-4375-985D-D748F9F01476}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{491A857A-3529-4375-985D-D748F9F01476}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{491A857A-3529-4375-985D-D748F9F01476}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{491A857A-3529-4375-985D-D748F9F01476}.Release|Any CPU.Build.0 = Release|Any CPU
 		{E1E9BC7A-6951-4B60-8DFB-DBB9AC3CDEB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E1E9BC7A-6951-4B60-8DFB-DBB9AC3CDEB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E1E9BC7A-6951-4B60-8DFB-DBB9AC3CDEB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{E1E9BC7A-6951-4B60-8DFB-DBB9AC3CDEB0}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{E1E9BC7A-6951-4B60-8DFB-DBB9AC3CDEB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E1E9BC7A-6951-4B60-8DFB-DBB9AC3CDEB0}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -71,7 +65,6 @@ Global
 		{1CE2D76B-39E6-46C0-8F6F-C63E370955A9} = {FF9B744E-6C59-40CC-9E41-9D2EBD292435}
 		{1CE2D76B-39E6-46C0-8F6F-C63E370955A9} = {FF9B744E-6C59-40CC-9E41-9D2EBD292435}
 		{2B2C37FF-9249-4EA4-9A7F-038B55A15C2C} = {CD650B4B-81C2-4A44-AEF2-A251A877C1F0}
 		{2B2C37FF-9249-4EA4-9A7F-038B55A15C2C} = {CD650B4B-81C2-4A44-AEF2-A251A877C1F0}
 		{809AEE05-1B28-4E31-8959-776B249BD725} = {CD650B4B-81C2-4A44-AEF2-A251A877C1F0}
 		{809AEE05-1B28-4E31-8959-776B249BD725} = {CD650B4B-81C2-4A44-AEF2-A251A877C1F0}
-		{491A857A-3529-4375-985D-D748F9F01476} = {CD650B4B-81C2-4A44-AEF2-A251A877C1F0}
 		{E1E9BC7A-6951-4B60-8DFB-DBB9AC3CDEB0} = {FF9B744E-6C59-40CC-9E41-9D2EBD292435}
 		{E1E9BC7A-6951-4B60-8DFB-DBB9AC3CDEB0} = {FF9B744E-6C59-40CC-9E41-9D2EBD292435}
 	EndGlobalSection
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 	GlobalSection(ExtensibilityGlobals) = postSolution

+ 1 - 1
src/Hosting/test/testassets/TestStartupAssembly1/TestStartupAssembly1.csproj

@@ -8,4 +8,4 @@
     <Reference Include="Microsoft.AspNetCore.Hosting.Abstractions" />
     <Reference Include="Microsoft.AspNetCore.Hosting.Abstractions" />
   </ItemGroup>
   </ItemGroup>
 
 
-</Project>
+</Project>

+ 1 - 1
src/Http/HttpAbstractions.sln

@@ -91,7 +91,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server
 EndProject
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.StaticFiles", "..\Middleware\StaticFiles\src\Microsoft.AspNetCore.StaticFiles.csproj", "{A0C7AE95-BBE7-4F75-9508-F5881C8A456D}"
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.StaticFiles", "..\Middleware\StaticFiles\src\Microsoft.AspNetCore.StaticFiles.csproj", "{A0C7AE95-BBE7-4F75-9508-F5881C8A456D}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.IISIntegration", "..\Servers\IIS\src\Microsoft.AspNetCore.Server.IISIntegration\Microsoft.AspNetCore.Server.IISIntegration.csproj", "{735DAFBA-8F07-4E68-BC46-A16E8A5A5F74}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.IISIntegration", "..\Servers\IIS\IISIntegration\src\Microsoft.AspNetCore.Server.IISIntegration.csproj", "{735DAFBA-8F07-4E68-BC46-A16E8A5A5F74}"
 EndProject
 EndProject
 Global
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution

+ 16 - 0
src/Middleware/CORS/test/FunctionalTests/CORS.FunctionalTests.npmproj

@@ -0,0 +1,16 @@
+<Project>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.props))\Directory.Build.props" />
+
+  <!--
+    This project file is present so the CI will run `npm install` on the package.json file.
+    The C# invokes node to start the tests.
+  -->
+
+  <PropertyGroup>
+    <IsPackable>false</IsPackable>
+    <IsBuildable>false</IsBuildable>
+    <IsTestProject>false</IsTestProject>
+  </PropertyGroup>
+
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), Directory.Build.targets))\Directory.Build.targets" />
+</Project>

+ 1 - 1
src/Servers/FunctionalTests.sln

@@ -23,7 +23,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server
 EndProject
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServerComparison.TestSites", "testassets\ServerComparison.TestSites\ServerComparison.TestSites.csproj", "{9D402831-ED2C-4026-925E-30F48371064A}"
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServerComparison.TestSites", "testassets\ServerComparison.TestSites\ServerComparison.TestSites.csproj", "{9D402831-ED2C-4026-925E-30F48371064A}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.IIS", "IIS\src\Microsoft.AspNetCore.Server.IIS\Microsoft.AspNetCore.Server.IIS.csproj", "{6516E482-75AA-4B76-B9A6-87ABEE1DB625}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.IIS", "IIS\IIS\src\Microsoft.AspNetCore.Server.IIS.csproj", "{6516E482-75AA-4B76-B9A6-87ABEE1DB625}"
 EndProject
 EndProject
 Global
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution

+ 1 - 0
src/Shared/test/Shared.Tests/Microsoft.AspNetCore.Shared.Tests.csproj

@@ -19,6 +19,7 @@
   <ItemGroup>
   <ItemGroup>
     <Reference Include="FSharp.Core" />
     <Reference Include="FSharp.Core" />
     <Reference Include="System.Reflection.Metadata" />
     <Reference Include="System.Reflection.Metadata" />
+    <Reference Include="System.Threading.Tasks.Extensions" />
     <Reference Include="Microsoft.Extensions.TypeNameHelper.Sources" PrivateAssets="All" />
     <Reference Include="Microsoft.Extensions.TypeNameHelper.Sources" PrivateAssets="All" />
   </ItemGroup>
   </ItemGroup>
 
 

+ 0 - 58
src/SignalR/.gitignore

@@ -1,58 +0,0 @@
-[Oo]bj/
-[Bb]in/
-TestResults/
-.nuget/
-*.sln.ide/
-_ReSharper.*/
-packages/
-artifacts/
-PublishProfiles/
-.vs/
-*.user
-*.suo
-*.cache
-*.docstates
-_ReSharper.*
-nuget.exe
-*net45.csproj
-*net451.csproj
-*k10.csproj
-*.psess
-*.vsp
-*.pidb
-*.userprefs
-*DS_Store
-*.ncrunchsolution
-*.*sdf
-*.ipch
-project.lock.json
-runtimes/
-.build/
-.testPublish/
-launchSettings.json
-node_modules/
-npm-debug.log
-*.tmp
-*.nuget.props
-*.nuget.targets
-autobahnreports/
-site.min.css
-.idea/
-.vscode/
-dist/
-global.json
-BenchmarkDotNet.Artifacts/
-.rpt2_cache/
-*.orig
-*.vspscc
-*.vssscc
-*.opensdf
-Debug/
-Release/
-ipch/
-*.vcxproj.user
-*.exe
-*.aps
-*.opendb
-*.db
-coverage/

+ 29 - 15
src/SignalR/Directory.Build.props

@@ -1,21 +1,35 @@
 <Project>
 <Project>
-  <Import
-    Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), AspNetCoreSettings.props))\AspNetCoreSettings.props"
-    Condition=" '$(CI)' != 'true' AND '$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), AspNetCoreSettings.props))' != '' " />
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.props))\Directory.Build.props" />
 
 
-  <Import Project="version.props" />
-  <Import Project="build\dependencies.props" />
-  <Import Project="build\sources.props" />
+  <PropertyGroup Condition="'$(MSBuildProjectExtension)' != '.javaproj'">
+    <!-- Override the version settings from the repo root. -->
+    <VersionPrefix>1.1.$(AspNetCorePatchVersion)</VersionPrefix>
+    <PackageVersion>$(VersionPrefix)</PackageVersion>
+    <PackageVersion Condition=" '$(IncludePreReleaseLabelInPackageVersion)' == 'true' ">$(VersionPrefix)-$(VersionSuffix)</PackageVersion>
+
+    <!-- These packages do not align with the repo version. -->
+    <VerifyVersions>false</VerifyVersions>
+  </PropertyGroup>
 
 
   <PropertyGroup>
   <PropertyGroup>
-    <Product>Microsoft ASP.NET Core</Product>
-    <RepositoryUrl>https://github.com/aspnet/SignalR</RepositoryUrl>
-    <RepositoryType>git</RepositoryType>
-    <RepositoryRoot>$(MSBuildThisFileDirectory)</RepositoryRoot>
-    <AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)build\Key.snk</AssemblyOriginatorKeyFile>
-    <SignAssembly>true</SignAssembly>
-    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
-	  <LangVersion>latest</LangVersion>
-    <SharedSourceRoot>$(MSBuildThisFileDirectory)..\Shared\</SharedSourceRoot>
+    <SignalRSharedSourceRoot>$(MSBuildThisFileDirectory)common\Shared\</SignalRSharedSourceRoot>
+    <SignalRTestUtilsProject>$(MSBuildThisFileDirectory)common\testassets\Tests.Utils\Microsoft.AspNetCore.SignalR.Tests.Utils.csproj</SignalRTestUtilsProject>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(IsTestProject)' != 'true'">
+    <NoWarn>$(NoWarn);CS1591</NoWarn>
+    <GenerateDocumentationFile>true</GenerateDocumentationFile>
+    <PackageTags>aspnetcore;signalr</PackageTags>
   </PropertyGroup>
   </PropertyGroup>
+
+  <ItemGroup Condition="'$(IsTestProject)' == 'true'">
+    <Content Include="$(MSBuildThisFileDirectory)xunit.runner.json" Link="xunit.runner.json">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Reference Include="Microsoft.Extensions.Logging.Testing" PrivateAssets="All" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Internal.AspNetCore.Analyzers" PrivateAssets="All" Version="$(InternalAspNetCoreAnalyzersPackageVersion)" />
+  </ItemGroup>
 </Project>
 </Project>

+ 7 - 4
src/SignalR/Directory.Build.targets

@@ -1,7 +1,10 @@
 <Project>
 <Project>
-  <PropertyGroup>
-    <RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp2.2' ">$(MicrosoftNETCoreApp22PackageVersion)</RuntimeFrameworkVersion>
-    <!-- aspnet/BuildTools#662 Don't police what version of NetCoreApp we use -->
-    <NETCoreAppMaximumVersion>99.9</NETCoreAppMaximumVersion>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory)..\, Directory.Build.targets))\Directory.Build.targets" />
+
+  <PropertyGroup Condition="'$(IsTestProject)' == 'true'">
+    <!-- Don't run SignalR tests in parallel with others. This causes OutOfMemoryException on hosted Azure Pipelines agents. -->
+    <TestGroupName>SignalR</TestGroupName>
+
+    <RuntimeIdentifier Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'">win7-x86</RuntimeIdentifier>
   </PropertyGroup>
   </PropertyGroup>
 </Project>
 </Project>

+ 0 - 7
src/SignalR/NuGetPackageVerifier.json

@@ -1,7 +0,0 @@
-{
-    "Default": {
-        "rules": [
-            "DefaultCompositeRule"
-        ]
-    }
-}

+ 1 - 20
src/SignalR/README.md

@@ -1,21 +1,10 @@
 ASP.NET Core SignalR
 ASP.NET Core SignalR
-========
-
-**IMPORTANT**: This repository hosts code and project management for ASP.NET **Core** SignalR, for use in ASP.NET Core applications using `Microsoft.AspNetCore.App`. If you are looking for information on ASP.NET SignalR (used in .NET Framework applications using System.Web and/or Katana), see the https://github.com/SignalR/SignalR repository.
-
-[![Build Status](https://dnceng.visualstudio.com/public/_apis/build/status/aspnet/SignalR/SignalR-ci)](https://dnceng.visualstudio.com/public/_build/latest?definitionId=26)
-[![NuGet version](https://badge.fury.io/nu/microsoft.aspnetcore.signalr.svg)](https://badge.fury.io/nu/microsoft.aspnetcore.signalr)
-[![npm version](https://badge.fury.io/js/%40aspnet%2Fsignalr.svg)](https://badge.fury.io/js/%40aspnet%2Fsignalr)
-[![Maven Version](https://maven-badges.herokuapp.com/maven-central/com.microsoft.signalr/signalr/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.microsoft.signalr/signalr)
-
-[![Join the chat at https://gitter.im/aspnet/SignalR](https://badges.gitter.im/aspnet/SignalR.svg)](https://gitter.im/aspnet/SignalR?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+====================
 
 
 ASP.NET Core SignalR is a new library for ASP.NET Core developers that makes it incredibly simple to add real-time web functionality to your applications. What is "real-time web" functionality? It's the ability to have your server-side code push content to the connected clients as it happens, in real-time.
 ASP.NET Core SignalR is a new library for ASP.NET Core developers that makes it incredibly simple to add real-time web functionality to your applications. What is "real-time web" functionality? It's the ability to have your server-side code push content to the connected clients as it happens, in real-time.
 
 
 You can watch an introductory presentation here - [ASP.NET Core SignalR: Build 2018](https://www.youtube.com/watch?v=Lws0zOaseIM)
 You can watch an introductory presentation here - [ASP.NET Core SignalR: Build 2018](https://www.youtube.com/watch?v=Lws0zOaseIM)
 
 
-This project is part of ASP.NET Core. You can find samples, documentation and getting started instructions for ASP.NET Core at the [Home](https://github.com/aspnet/home) repo.
-
 ## Documentation
 ## Documentation
 
 
 Documentation for ASP.NET Core SignalR can be found in the [Real-time Apps](https://docs.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-2.1) section of the ASP.NET Core Documentation site.
 Documentation for ASP.NET Core SignalR can be found in the [Real-time Apps](https://docs.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-2.1) section of the ASP.NET Core Documentation site.
@@ -61,11 +50,3 @@ npm install @aspnet/signalr-protocol-msgpack
 ## Deploying
 ## Deploying
 
 
 Once you've installed the NPM modules, they will be located in the `node_modules/@aspnet/signalr` and `node_modules/@aspnet/signalr-protocol-msgpack` folders. If you are building a NodeJS application or using an ECMAScript module loader/bundler (such as [webpack](https://webpack.js.org)), you can load them directly. If you are building a browser application without using a module bundler, you can find UMD-compatible bundles in the `dist/browser` folder; minified versions are provided as well. Simply copy these to your project as appropriate and use a build task to keep them up-to-date.
 Once you've installed the NPM modules, they will be located in the `node_modules/@aspnet/signalr` and `node_modules/@aspnet/signalr-protocol-msgpack` folders. If you are building a NodeJS application or using an ECMAScript module loader/bundler (such as [webpack](https://webpack.js.org)), you can load them directly. If you are building a browser application without using a module bundler, you can find UMD-compatible bundles in the `dist/browser` folder; minified versions are provided as well. Simply copy these to your project as appropriate and use a build task to keep them up-to-date.
-
-## Building from source
-
-To run a complete build on command line only, execute `build.cmd` or `build.sh` without arguments.
-
-If this is your first time building *SignalR* please see the [Getting Started](docs/GettingStarted.md) for more information about project dependencies and other build-related information specific to *SignalR*. 
-
-See [developer documentation](https://github.com/aspnet/Home/wiki) for general information on building and contributing to this and other [aspnet](https://github.com/aspnet) repositories.

+ 259 - 163
src/SignalR/SignalR.sln

@@ -3,97 +3,115 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 15
 # Visual Studio 15
 VisualStudioVersion = 15.0.27110.0
 VisualStudioVersion = 15.0.27110.0
 MinimumVisualStudioVersion = 15.0.26730.03
 MinimumVisualStudioVersion = 15.0.26730.03
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{DA69F624-5398-4884-87E4-B816698CDE65}"
-	ProjectSection(SolutionItems) = preProject
-		src\Directory.Build.props = src\Directory.Build.props
-	EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{83B2C3EB-A3D8-4E6F-9A3C-A380B005EF31}"
-	ProjectSection(SolutionItems) = preProject
-		benchmarkapps\BenchmarkServer\BenchmarkServer.csproj = benchmarkapps\BenchmarkServer\BenchmarkServer.csproj
-		build\dependencies.props = build\dependencies.props
-		Directory.Build.props = Directory.Build.props
-		Directory.Build.targets = Directory.Build.targets
-		build\Key.snk = build\Key.snk
-		NuGet.config = NuGet.config
-		build\repo.props = build\repo.props
-		build\repo.targets = build\repo.targets
-	EndProjectSection
-EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{C4BC9889-B49F-41B6-806B-F84941B2549B}"
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{C4BC9889-B49F-41B6-806B-F84941B2549B}"
 EndProject
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SignalRSamples", "samples\SignalRSamples\SignalRSamples.csproj", "{C4AEAB04-F341-4539-B6C0-52368FB4BF9E}"
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SignalRSamples", "samples\SignalRSamples\SignalRSamples.csproj", "{C4AEAB04-F341-4539-B6C0-52368FB4BF9E}"
 EndProject
 EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{6A35B453-52EC-48AF-89CA-D4A69800F131}"
-	ProjectSection(SolutionItems) = preProject
-		test\Directory.Build.props = test\Directory.Build.props
-	EndProjectSection
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SocialWeather", "samples\SocialWeather\SocialWeather.csproj", "{8D789F94-CB74-45FD-ACE7-92AF6E55042E}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Connections.Tests", "test\Microsoft.AspNetCore.Http.Connections.Tests\Microsoft.AspNetCore.Http.Connections.Tests.csproj", "{AAD719D5-5E31-4ED1-A60F-6EB92EFA66D9}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClientSample", "samples\ClientSample\ClientSample.csproj", "{BA99C2A1-48F9-4FA5-B95A-9687A73B7CC9}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Core", "src\Microsoft.AspNetCore.SignalR.Core\Microsoft.AspNetCore.SignalR.Core.csproj", "{42E76F87-92B6-45AB-BF07-6B811C0F2CAC}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebSocketSample", "samples\WebSocketSample\WebSocketSample.csproj", "{EE790D50-C632-46B9-A430-06FA2F2FDCD7}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Redis", "src\Microsoft.AspNetCore.SignalR.Redis\Microsoft.AspNetCore.SignalR.Redis.csproj", "{59319B72-38BE-4041-8E5C-FF6938874CE8}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "clients", "clients", "{3A76C5A2-79ED-49BC-8BDC-6A3A766FFA1B}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SocialWeather", "samples\SocialWeather\SocialWeather.csproj", "{8D789F94-CB74-45FD-ACE7-92AF6E55042E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JwtSample", "samples\JwtSample\JwtSample.csproj", "{6A7491D3-3C97-49BD-A71C-433AED657F30}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Tests", "test\Microsoft.AspNetCore.SignalR.Tests\Microsoft.AspNetCore.SignalR.Tests.csproj", "{1CE2B3BE-056C-41E3-A5F5-6A1EF1D288BA}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JwtClientSample", "samples\JwtClientSample\JwtClientSample.csproj", "{1A953296-E869-4DE2-A693-FD5FCDE27057}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClientSample", "samples\ClientSample\ClientSample.csproj", "{BA99C2A1-48F9-4FA5-B95A-9687A73B7CC9}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunctionalTests", "clients\ts\FunctionalTests\FunctionalTests.csproj", "{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebSocketSample", "samples\WebSocketSample\WebSocketSample.csproj", "{EE790D50-C632-46B9-A430-06FA2F2FDCD7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Hosting", "..\Hosting\Hosting\src\Microsoft.AspNetCore.Hosting.csproj", "{3AC35C9A-3344-4BBB-B789-06CEE2CD093E}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Client.Tests", "test\Microsoft.AspNetCore.SignalR.Client.Tests\Microsoft.AspNetCore.SignalR.Client.Tests.csproj", "{B19C15A5-F5EA-4CA7-936B-1166ABEE35C4}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.IntegrationTesting", "..\Hosting\Server.IntegrationTesting\src\Microsoft.AspNetCore.Server.IntegrationTesting.csproj", "{8312A1B0-6FA8-47FE-9299-A76202AC920B}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Common", "src\Microsoft.AspNetCore.SignalR.Common\Microsoft.AspNetCore.SignalR.Common.csproj", "{E37324FF-6BAF-4243-BA80-7C024CF5F29D}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.TestHost", "..\Hosting\TestHost\src\Microsoft.AspNetCore.TestHost.csproj", "{3ACAB196-DD18-4AD0-87BE-2F4CB062D2F7}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Client.Core", "src\Microsoft.AspNetCore.SignalR.Client.Core\Microsoft.AspNetCore.SignalR.Client.Core.csproj", "{354335AB-CEE9-4434-A641-78058F6EFE56}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Authentication.Core", "..\Http\Authentication.Core\src\Microsoft.AspNetCore.Authentication.Core.csproj", "{9A9BE05B-1662-4A80-AE44-7D06071A1473}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Client.FunctionalTests", "test\Microsoft.AspNetCore.SignalR.Client.FunctionalTests\Microsoft.AspNetCore.SignalR.Client.FunctionalTests.csproj", "{455B68D2-C5B6-4BF4-A685-964B07AFAAF8}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Abstractions", "..\Http\Http.Abstractions\src\Microsoft.AspNetCore.Http.Abstractions.csproj", "{1758768B-81BC-434D-A4E6-4C821436373E}"
 EndProject
 EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "clients", "clients", "{3A76C5A2-79ED-49BC-8BDC-6A3A766FFA1B}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http", "..\Http\Http\src\Microsoft.AspNetCore.Http.csproj", "{07137BC8-F3D8-425E-8A7F-1AAA383EA845}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Microbenchmarks", "benchmarks\Microsoft.AspNetCore.SignalR.Microbenchmarks\Microsoft.AspNetCore.SignalR.Microbenchmarks.csproj", "{96771B3F-4D18-41A7-A75B-FF38E76AAC89}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Cors", "..\Middleware\CORS\src\Microsoft.AspNetCore.Cors.csproj", "{9D500098-648F-4EC3-9B89-9BAB7278EDF1}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Common.Tests", "test\Microsoft.AspNetCore.SignalR.Common.Tests\Microsoft.AspNetCore.SignalR.Common.Tests.csproj", "{75E342F6-5445-4E7E-9143-6D9AE62C2B1E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Diagnostics", "..\Middleware\Diagnostics\src\Microsoft.AspNetCore.Diagnostics.csproj", "{98B8D556-A024-42FA-B288-F6DA9EB2B338}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR", "src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj", "{FD80BB0F-0876-4F11-8D84-6657C8EF84CA}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.StaticFiles", "..\Middleware\StaticFiles\src\Microsoft.AspNetCore.StaticFiles.csproj", "{6818EAB6-8D81-4FE9-8E5F-44D7EF18FF74}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Connections", "src\Microsoft.AspNetCore.Http.Connections\Microsoft.AspNetCore.Http.Connections.csproj", "{9E403E93-3284-486F-9A5F-1E15FCE426A5}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Authentication.Cookies", "..\Security\Authentication\Cookies\src\Microsoft.AspNetCore.Authentication.Cookies.csproj", "{73C9A9F6-4254-450B-9BD0-B665DE298D9D}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Connections.Client", "src\Microsoft.AspNetCore.Http.Connections.Client\Microsoft.AspNetCore.Http.Connections.Client.csproj", "{B0243F99-2D3F-4CC6-AD71-E3F891B64724}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Authentication", "..\Security\Authentication\Core\src\Microsoft.AspNetCore.Authentication.csproj", "{EBE99AF6-6F53-49DE-9B6C-0BF03731CD91}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Connections.Common", "src\Microsoft.AspNetCore.Http.Connections.Common\Microsoft.AspNetCore.Http.Connections.Common.csproj", "{E081EE41-D95F-4AD2-BC0B-4B562C0A2A47}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Authentication.JwtBearer", "..\Security\Authentication\JwtBearer\src\Microsoft.AspNetCore.Authentication.JwtBearer.csproj", "{2F1FA614-9257-405F-815A-97EE72E046F4}"
 EndProject
 EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarks", "benchmarks", "{8A4582C8-DC59-4B61-BCE7-119FBAA99EFB}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.IISIntegration", "..\Servers\IIS\IISIntegration\src\Microsoft.AspNetCore.Server.IISIntegration.csproj", "{39A4DA7A-6857-4594-8AE1-406F1F271B5C}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Client", "src\Microsoft.AspNetCore.SignalR.Client\Microsoft.AspNetCore.SignalR.Client.csproj", "{BE982591-F4BB-42D9-ABD4-A5D44C65971E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.Kestrel", "..\Servers\Kestrel\Kestrel\src\Microsoft.AspNetCore.Server.Kestrel.csproj", "{356D6B62-1EDE-43F9-B78E-E160F4EC02E7}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Redis.Tests", "test\Microsoft.AspNetCore.SignalR.Redis.Tests\Microsoft.AspNetCore.SignalR.Redis.Tests.csproj", "{0B083AE6-86CA-4E0B-AE02-59154D1FD005}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Client.Core", "clients\csharp\Client.Core\src\Microsoft.AspNetCore.SignalR.Client.Core.csproj", "{1F83C880-645D-477B-A877-157F49660B0E}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JwtSample", "samples\JwtSample\JwtSample.csproj", "{6A7491D3-3C97-49BD-A71C-433AED657F30}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Client", "clients\csharp\Client\src\Microsoft.AspNetCore.SignalR.Client.csproj", "{903FDE03-F9A6-4969-9028-842A53580667}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JwtClientSample", "samples\JwtClientSample\JwtClientSample.csproj", "{1A953296-E869-4DE2-A693-FD5FCDE27057}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Client.FunctionalTests", "clients\csharp\Client\test\FunctionalTests\Microsoft.AspNetCore.SignalR.Client.FunctionalTests.csproj", "{A7C2BC93-DFB9-45B3-8CD9-EBA940BC23D1}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Tests.Utils", "test\Microsoft.AspNetCore.SignalR.Tests.Utils\Microsoft.AspNetCore.SignalR.Tests.Utils.csproj", "{0A0A6135-EA24-4307-95C2-CE1B7E164A5E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Client.Tests", "clients\csharp\Client\test\UnitTests\Microsoft.AspNetCore.SignalR.Client.Tests.csproj", "{3012F7C4-0181-40B8-9391-04EF794DE9A3}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Protocols.MessagePack", "src\Microsoft.AspNetCore.SignalR.Protocols.MessagePack\Microsoft.AspNetCore.SignalR.Protocols.MessagePack.csproj", "{55DB4B6F-12E5-4A27-97F4-E97E135470FF}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Connections.Client", "clients\csharp\Http.Connections.Client\src\Microsoft.AspNetCore.Http.Connections.Client.csproj", "{EA5C411C-AC81-4C51-BB85-CBE8F0E7BE1E}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunctionalTests", "clients\ts\FunctionalTests\FunctionalTests.csproj", "{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{9FCD621E-E710-4991-B45C-1BABC977BEEC}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Connections.Common", "common\Http.Connections.Common\src\Microsoft.AspNetCore.Http.Connections.Common.csproj", "{F3F532CF-BABD-4517-8C46-61869F814C58}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Connections", "common\Http.Connections\src\Microsoft.AspNetCore.Http.Connections.csproj", "{9D9EAC92-0CDC-4648-BC14-E602BCDF71A3}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Http.Connections.Tests", "common\Http.Connections\test\Microsoft.AspNetCore.Http.Connections.Tests.csproj", "{126E8FB0-350D-4EA8-BDCD-708055112358}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Protocols.Json", "common\Protocols.Json\src\Microsoft.AspNetCore.SignalR.Protocols.Json.csproj", "{0CD3CCCE-45CD-4CB0-820E-D6964A410FB9}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Protocols.MessagePack", "common\Protocols.MessagePack\src\Microsoft.AspNetCore.SignalR.Protocols.MessagePack.csproj", "{0CD2E602-3B28-42DB-A71B-34C50E9663CE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Common", "common\SignalR.Common\src\Microsoft.AspNetCore.SignalR.Common.csproj", "{CE635283-EE95-4F8E-B80A-2DF0E8E530AE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Common.Tests", "common\SignalR.Common\test\Microsoft.AspNetCore.SignalR.Common.Tests.csproj", "{64D82C2D-4F93-4B4F-8FF5-5086C242F9D2}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "testassets", "testassets", "{6D9DF750-BA0D-4ED7-8137-732E52894B1C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Tests.Utils", "common\testassets\Tests.Utils\Microsoft.AspNetCore.SignalR.Tests.Utils.csproj", "{21C71457-3910-4BC1-937F-57B0172004CA}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "perf", "perf", "{AC3CD0BA-DE19-4333-9A42-3CFCC9FF0332}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarkapps", "benchmarkapps", "{1AF35754-036E-4D19-BE71-6144CEC0E1D5}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BenchmarkServer", "perf\benchmarkapps\BenchmarkServer\BenchmarkServer.csproj", "{35C0D65F-643E-42FA-9177-2BFFDE9AFA14}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Crankier", "perf\benchmarkapps\Crankier\Crankier.csproj", "{56563C41-59EA-4B7F-94DC-ADD5923EC087}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Microbenchmarks", "perf\Microbenchmarks\Microsoft.AspNetCore.SignalR.Microbenchmarks.csproj", "{B34D6810-1A95-462F-A8DD-76E2B7FC5CEE}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "server", "server", "{37DDE730-33D7-4400-9F12-84F0F2C0F319}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Core", "server\Core\src\Microsoft.AspNetCore.SignalR.Core.csproj", "{F7CF971E-4FD8-4E3C-9BA1-0A0C84E2E72A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR", "server\SignalR\src\Microsoft.AspNetCore.SignalR.csproj", "{F98DC946-BB11-444E-BD87-13CB07E5E107}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Tests", "server\SignalR\test\Microsoft.AspNetCore.SignalR.Tests.csproj", "{6089F7BD-6A47-4C8F-A55F-5B813BECA763}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Redis", "server\Redis\src\Microsoft.AspNetCore.SignalR.Redis.csproj", "{1C1556CC-A91E-4B69-A5E8-644052B1CB7B}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Protocols.Json", "src\Microsoft.AspNetCore.SignalR.Protocols.Json\Microsoft.AspNetCore.SignalR.Protocols.Json.csproj", "{896FA5EE-63A5-4EAC-9F09-346584BB4830}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Redis.Tests", "server\Redis\test\Microsoft.AspNetCore.SignalR.Redis.Tests.csproj", "{44D6120C-A975-4551-9ED5-49A99047FEA8}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BenchmarkServer", "benchmarkapps\BenchmarkServer\BenchmarkServer.csproj", "{8C75AC94-C980-4FE1-9F79-6CED3C8665CE}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dependencies", "dependencies", "{EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Crankier", "benchmarkapps\Crankier\Crankier.csproj", "{8D3E3E7D-452B-44F4-86CA-111003EA11ED}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "testassets", "testassets", "{F2AB9C8F-CC30-495D-ACF4-9E4715F46C90}"
 EndProject
 EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarkapps", "benchmarkapps", "{43F352F3-4E2B-4ED7-901B-36E6671251F5}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Specification.Tests", "server\Specification.Tests\src\Microsoft.AspNetCore.SignalR.Specification.Tests.csproj", "{2B03333F-3ACD-474C-862B-FA97D3BA03B5}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.Specification.Tests", "src\Microsoft.AspNetCore.SignalR.Specification.Tests\Microsoft.AspNetCore.SignalR.Specification.Tests.csproj", "{2B03333F-3ACD-474C-862B-FA97D3BA03B5}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.StackExchangeRedis", "server\StackExchangeRedis\src\Microsoft.AspNetCore.SignalR.StackExchangeRedis.csproj", "{D1334F29-5C19-4C7B-B62D-0A2F23AFB31C}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.StackExchangeRedis", "src\Microsoft.AspNetCore.SignalR.StackExchangeRedis\Microsoft.AspNetCore.SignalR.StackExchangeRedis.csproj", "{D1334F29-5C19-4C7B-B62D-0A2F23AFB31C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.StackExchangeRedis.Tests", "server\StackExchangeRedis\test\Microsoft.AspNetCore.SignalR.StackExchangeRedis.Tests.csproj", "{A5006087-81B0-4C62-B847-50ED5C37069D}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SignalR.StackExchangeRedis.Tests", "test\Microsoft.AspNetCore.SignalR.StackExchangeRedis.Tests\Microsoft.AspNetCore.SignalR.StackExchangeRedis.Tests.csproj", "{A5006087-81B0-4C62-B847-50ED5C37069D}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Hosting.Abstractions", "..\Hosting\Abstractions\src\Microsoft.AspNetCore.Hosting.Abstractions.csproj", "{C398E9E7-7FBF-4667-813C-D5E0DB3BE0B1}"
 EndProject
 EndProject
 Global
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -105,26 +123,10 @@ Global
 		{C4AEAB04-F341-4539-B6C0-52368FB4BF9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{C4AEAB04-F341-4539-B6C0-52368FB4BF9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{C4AEAB04-F341-4539-B6C0-52368FB4BF9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{C4AEAB04-F341-4539-B6C0-52368FB4BF9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{C4AEAB04-F341-4539-B6C0-52368FB4BF9E}.Release|Any CPU.Build.0 = Release|Any CPU
 		{C4AEAB04-F341-4539-B6C0-52368FB4BF9E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{AAD719D5-5E31-4ED1-A60F-6EB92EFA66D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{AAD719D5-5E31-4ED1-A60F-6EB92EFA66D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{AAD719D5-5E31-4ED1-A60F-6EB92EFA66D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{AAD719D5-5E31-4ED1-A60F-6EB92EFA66D9}.Release|Any CPU.Build.0 = Release|Any CPU
-		{42E76F87-92B6-45AB-BF07-6B811C0F2CAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{42E76F87-92B6-45AB-BF07-6B811C0F2CAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{42E76F87-92B6-45AB-BF07-6B811C0F2CAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{42E76F87-92B6-45AB-BF07-6B811C0F2CAC}.Release|Any CPU.Build.0 = Release|Any CPU
-		{59319B72-38BE-4041-8E5C-FF6938874CE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{59319B72-38BE-4041-8E5C-FF6938874CE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{59319B72-38BE-4041-8E5C-FF6938874CE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{59319B72-38BE-4041-8E5C-FF6938874CE8}.Release|Any CPU.Build.0 = Release|Any CPU
 		{8D789F94-CB74-45FD-ACE7-92AF6E55042E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{8D789F94-CB74-45FD-ACE7-92AF6E55042E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{8D789F94-CB74-45FD-ACE7-92AF6E55042E}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{8D789F94-CB74-45FD-ACE7-92AF6E55042E}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{8D789F94-CB74-45FD-ACE7-92AF6E55042E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{8D789F94-CB74-45FD-ACE7-92AF6E55042E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{8D789F94-CB74-45FD-ACE7-92AF6E55042E}.Release|Any CPU.Build.0 = Release|Any CPU
 		{8D789F94-CB74-45FD-ACE7-92AF6E55042E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{1CE2B3BE-056C-41E3-A5F5-6A1EF1D288BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{1CE2B3BE-056C-41E3-A5F5-6A1EF1D288BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{1CE2B3BE-056C-41E3-A5F5-6A1EF1D288BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{1CE2B3BE-056C-41E3-A5F5-6A1EF1D288BA}.Release|Any CPU.Build.0 = Release|Any CPU
 		{BA99C2A1-48F9-4FA5-B95A-9687A73B7CC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{BA99C2A1-48F9-4FA5-B95A-9687A73B7CC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{BA99C2A1-48F9-4FA5-B95A-9687A73B7CC9}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{BA99C2A1-48F9-4FA5-B95A-9687A73B7CC9}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{BA99C2A1-48F9-4FA5-B95A-9687A73B7CC9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{BA99C2A1-48F9-4FA5-B95A-9687A73B7CC9}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -133,54 +135,6 @@ Global
 		{EE790D50-C632-46B9-A430-06FA2F2FDCD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{EE790D50-C632-46B9-A430-06FA2F2FDCD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{EE790D50-C632-46B9-A430-06FA2F2FDCD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{EE790D50-C632-46B9-A430-06FA2F2FDCD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{EE790D50-C632-46B9-A430-06FA2F2FDCD7}.Release|Any CPU.Build.0 = Release|Any CPU
 		{EE790D50-C632-46B9-A430-06FA2F2FDCD7}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B19C15A5-F5EA-4CA7-936B-1166ABEE35C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B19C15A5-F5EA-4CA7-936B-1166ABEE35C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B19C15A5-F5EA-4CA7-936B-1166ABEE35C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B19C15A5-F5EA-4CA7-936B-1166ABEE35C4}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E37324FF-6BAF-4243-BA80-7C024CF5F29D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{E37324FF-6BAF-4243-BA80-7C024CF5F29D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E37324FF-6BAF-4243-BA80-7C024CF5F29D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{E37324FF-6BAF-4243-BA80-7C024CF5F29D}.Release|Any CPU.Build.0 = Release|Any CPU
-		{354335AB-CEE9-4434-A641-78058F6EFE56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{354335AB-CEE9-4434-A641-78058F6EFE56}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{354335AB-CEE9-4434-A641-78058F6EFE56}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{354335AB-CEE9-4434-A641-78058F6EFE56}.Release|Any CPU.Build.0 = Release|Any CPU
-		{455B68D2-C5B6-4BF4-A685-964B07AFAAF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{455B68D2-C5B6-4BF4-A685-964B07AFAAF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{455B68D2-C5B6-4BF4-A685-964B07AFAAF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{455B68D2-C5B6-4BF4-A685-964B07AFAAF8}.Release|Any CPU.Build.0 = Release|Any CPU
-		{96771B3F-4D18-41A7-A75B-FF38E76AAC89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{96771B3F-4D18-41A7-A75B-FF38E76AAC89}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{96771B3F-4D18-41A7-A75B-FF38E76AAC89}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{96771B3F-4D18-41A7-A75B-FF38E76AAC89}.Release|Any CPU.Build.0 = Release|Any CPU
-		{75E342F6-5445-4E7E-9143-6D9AE62C2B1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{75E342F6-5445-4E7E-9143-6D9AE62C2B1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{75E342F6-5445-4E7E-9143-6D9AE62C2B1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{75E342F6-5445-4E7E-9143-6D9AE62C2B1E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{FD80BB0F-0876-4F11-8D84-6657C8EF84CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{FD80BB0F-0876-4F11-8D84-6657C8EF84CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{FD80BB0F-0876-4F11-8D84-6657C8EF84CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{FD80BB0F-0876-4F11-8D84-6657C8EF84CA}.Release|Any CPU.Build.0 = Release|Any CPU
-		{9E403E93-3284-486F-9A5F-1E15FCE426A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{9E403E93-3284-486F-9A5F-1E15FCE426A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{9E403E93-3284-486F-9A5F-1E15FCE426A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{9E403E93-3284-486F-9A5F-1E15FCE426A5}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B0243F99-2D3F-4CC6-AD71-E3F891B64724}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B0243F99-2D3F-4CC6-AD71-E3F891B64724}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B0243F99-2D3F-4CC6-AD71-E3F891B64724}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B0243F99-2D3F-4CC6-AD71-E3F891B64724}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E081EE41-D95F-4AD2-BC0B-4B562C0A2A47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{E081EE41-D95F-4AD2-BC0B-4B562C0A2A47}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E081EE41-D95F-4AD2-BC0B-4B562C0A2A47}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{E081EE41-D95F-4AD2-BC0B-4B562C0A2A47}.Release|Any CPU.Build.0 = Release|Any CPU
-		{BE982591-F4BB-42D9-ABD4-A5D44C65971E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{BE982591-F4BB-42D9-ABD4-A5D44C65971E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BE982591-F4BB-42D9-ABD4-A5D44C65971E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{BE982591-F4BB-42D9-ABD4-A5D44C65971E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{0B083AE6-86CA-4E0B-AE02-59154D1FD005}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{0B083AE6-86CA-4E0B-AE02-59154D1FD005}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{0B083AE6-86CA-4E0B-AE02-59154D1FD005}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{0B083AE6-86CA-4E0B-AE02-59154D1FD005}.Release|Any CPU.Build.0 = Release|Any CPU
 		{6A7491D3-3C97-49BD-A71C-433AED657F30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{6A7491D3-3C97-49BD-A71C-433AED657F30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{6A7491D3-3C97-49BD-A71C-433AED657F30}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{6A7491D3-3C97-49BD-A71C-433AED657F30}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{6A7491D3-3C97-49BD-A71C-433AED657F30}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6A7491D3-3C97-49BD-A71C-433AED657F30}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -189,30 +143,150 @@ Global
 		{1A953296-E869-4DE2-A693-FD5FCDE27057}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{1A953296-E869-4DE2-A693-FD5FCDE27057}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{1A953296-E869-4DE2-A693-FD5FCDE27057}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{1A953296-E869-4DE2-A693-FD5FCDE27057}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{1A953296-E869-4DE2-A693-FD5FCDE27057}.Release|Any CPU.Build.0 = Release|Any CPU
 		{1A953296-E869-4DE2-A693-FD5FCDE27057}.Release|Any CPU.Build.0 = Release|Any CPU
-		{0A0A6135-EA24-4307-95C2-CE1B7E164A5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{0A0A6135-EA24-4307-95C2-CE1B7E164A5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{0A0A6135-EA24-4307-95C2-CE1B7E164A5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{0A0A6135-EA24-4307-95C2-CE1B7E164A5E}.Release|Any CPU.Build.0 = Release|Any CPU
-		{55DB4B6F-12E5-4A27-97F4-E97E135470FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{55DB4B6F-12E5-4A27-97F4-E97E135470FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{55DB4B6F-12E5-4A27-97F4-E97E135470FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{55DB4B6F-12E5-4A27-97F4-E97E135470FF}.Release|Any CPU.Build.0 = Release|Any CPU
 		{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981}.Release|Any CPU.Build.0 = Release|Any CPU
 		{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981}.Release|Any CPU.Build.0 = Release|Any CPU
-		{896FA5EE-63A5-4EAC-9F09-346584BB4830}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{896FA5EE-63A5-4EAC-9F09-346584BB4830}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{896FA5EE-63A5-4EAC-9F09-346584BB4830}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{896FA5EE-63A5-4EAC-9F09-346584BB4830}.Release|Any CPU.Build.0 = Release|Any CPU
-		{8C75AC94-C980-4FE1-9F79-6CED3C8665CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{8C75AC94-C980-4FE1-9F79-6CED3C8665CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{8C75AC94-C980-4FE1-9F79-6CED3C8665CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{8C75AC94-C980-4FE1-9F79-6CED3C8665CE}.Release|Any CPU.Build.0 = Release|Any CPU
-		{8D3E3E7D-452B-44F4-86CA-111003EA11ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{8D3E3E7D-452B-44F4-86CA-111003EA11ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{8D3E3E7D-452B-44F4-86CA-111003EA11ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{8D3E3E7D-452B-44F4-86CA-111003EA11ED}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3AC35C9A-3344-4BBB-B789-06CEE2CD093E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3AC35C9A-3344-4BBB-B789-06CEE2CD093E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3AC35C9A-3344-4BBB-B789-06CEE2CD093E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3AC35C9A-3344-4BBB-B789-06CEE2CD093E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{8312A1B0-6FA8-47FE-9299-A76202AC920B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{8312A1B0-6FA8-47FE-9299-A76202AC920B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{8312A1B0-6FA8-47FE-9299-A76202AC920B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{8312A1B0-6FA8-47FE-9299-A76202AC920B}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3ACAB196-DD18-4AD0-87BE-2F4CB062D2F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3ACAB196-DD18-4AD0-87BE-2F4CB062D2F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3ACAB196-DD18-4AD0-87BE-2F4CB062D2F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3ACAB196-DD18-4AD0-87BE-2F4CB062D2F7}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9A9BE05B-1662-4A80-AE44-7D06071A1473}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9A9BE05B-1662-4A80-AE44-7D06071A1473}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9A9BE05B-1662-4A80-AE44-7D06071A1473}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9A9BE05B-1662-4A80-AE44-7D06071A1473}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1758768B-81BC-434D-A4E6-4C821436373E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1758768B-81BC-434D-A4E6-4C821436373E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1758768B-81BC-434D-A4E6-4C821436373E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1758768B-81BC-434D-A4E6-4C821436373E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{07137BC8-F3D8-425E-8A7F-1AAA383EA845}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{07137BC8-F3D8-425E-8A7F-1AAA383EA845}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{07137BC8-F3D8-425E-8A7F-1AAA383EA845}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{07137BC8-F3D8-425E-8A7F-1AAA383EA845}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9D500098-648F-4EC3-9B89-9BAB7278EDF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D500098-648F-4EC3-9B89-9BAB7278EDF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9D500098-648F-4EC3-9B89-9BAB7278EDF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9D500098-648F-4EC3-9B89-9BAB7278EDF1}.Release|Any CPU.Build.0 = Release|Any CPU
+		{98B8D556-A024-42FA-B288-F6DA9EB2B338}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{98B8D556-A024-42FA-B288-F6DA9EB2B338}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{98B8D556-A024-42FA-B288-F6DA9EB2B338}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{98B8D556-A024-42FA-B288-F6DA9EB2B338}.Release|Any CPU.Build.0 = Release|Any CPU
+		{6818EAB6-8D81-4FE9-8E5F-44D7EF18FF74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6818EAB6-8D81-4FE9-8E5F-44D7EF18FF74}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{6818EAB6-8D81-4FE9-8E5F-44D7EF18FF74}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{6818EAB6-8D81-4FE9-8E5F-44D7EF18FF74}.Release|Any CPU.Build.0 = Release|Any CPU
+		{73C9A9F6-4254-450B-9BD0-B665DE298D9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{73C9A9F6-4254-450B-9BD0-B665DE298D9D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{73C9A9F6-4254-450B-9BD0-B665DE298D9D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{73C9A9F6-4254-450B-9BD0-B665DE298D9D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{EBE99AF6-6F53-49DE-9B6C-0BF03731CD91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{EBE99AF6-6F53-49DE-9B6C-0BF03731CD91}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{EBE99AF6-6F53-49DE-9B6C-0BF03731CD91}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{EBE99AF6-6F53-49DE-9B6C-0BF03731CD91}.Release|Any CPU.Build.0 = Release|Any CPU
+		{2F1FA614-9257-405F-815A-97EE72E046F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{2F1FA614-9257-405F-815A-97EE72E046F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{2F1FA614-9257-405F-815A-97EE72E046F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{2F1FA614-9257-405F-815A-97EE72E046F4}.Release|Any CPU.Build.0 = Release|Any CPU
+		{39A4DA7A-6857-4594-8AE1-406F1F271B5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{39A4DA7A-6857-4594-8AE1-406F1F271B5C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{39A4DA7A-6857-4594-8AE1-406F1F271B5C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{39A4DA7A-6857-4594-8AE1-406F1F271B5C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{356D6B62-1EDE-43F9-B78E-E160F4EC02E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{356D6B62-1EDE-43F9-B78E-E160F4EC02E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{356D6B62-1EDE-43F9-B78E-E160F4EC02E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{356D6B62-1EDE-43F9-B78E-E160F4EC02E7}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1F83C880-645D-477B-A877-157F49660B0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1F83C880-645D-477B-A877-157F49660B0E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1F83C880-645D-477B-A877-157F49660B0E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1F83C880-645D-477B-A877-157F49660B0E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{903FDE03-F9A6-4969-9028-842A53580667}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{903FDE03-F9A6-4969-9028-842A53580667}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{903FDE03-F9A6-4969-9028-842A53580667}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{903FDE03-F9A6-4969-9028-842A53580667}.Release|Any CPU.Build.0 = Release|Any CPU
+		{A7C2BC93-DFB9-45B3-8CD9-EBA940BC23D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{A7C2BC93-DFB9-45B3-8CD9-EBA940BC23D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A7C2BC93-DFB9-45B3-8CD9-EBA940BC23D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{A7C2BC93-DFB9-45B3-8CD9-EBA940BC23D1}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3012F7C4-0181-40B8-9391-04EF794DE9A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3012F7C4-0181-40B8-9391-04EF794DE9A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3012F7C4-0181-40B8-9391-04EF794DE9A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3012F7C4-0181-40B8-9391-04EF794DE9A3}.Release|Any CPU.Build.0 = Release|Any CPU
+		{EA5C411C-AC81-4C51-BB85-CBE8F0E7BE1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{EA5C411C-AC81-4C51-BB85-CBE8F0E7BE1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{EA5C411C-AC81-4C51-BB85-CBE8F0E7BE1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{EA5C411C-AC81-4C51-BB85-CBE8F0E7BE1E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F3F532CF-BABD-4517-8C46-61869F814C58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F3F532CF-BABD-4517-8C46-61869F814C58}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F3F532CF-BABD-4517-8C46-61869F814C58}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F3F532CF-BABD-4517-8C46-61869F814C58}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9D9EAC92-0CDC-4648-BC14-E602BCDF71A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D9EAC92-0CDC-4648-BC14-E602BCDF71A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9D9EAC92-0CDC-4648-BC14-E602BCDF71A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9D9EAC92-0CDC-4648-BC14-E602BCDF71A3}.Release|Any CPU.Build.0 = Release|Any CPU
+		{126E8FB0-350D-4EA8-BDCD-708055112358}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{126E8FB0-350D-4EA8-BDCD-708055112358}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{126E8FB0-350D-4EA8-BDCD-708055112358}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{126E8FB0-350D-4EA8-BDCD-708055112358}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0CD3CCCE-45CD-4CB0-820E-D6964A410FB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0CD3CCCE-45CD-4CB0-820E-D6964A410FB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0CD3CCCE-45CD-4CB0-820E-D6964A410FB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0CD3CCCE-45CD-4CB0-820E-D6964A410FB9}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0CD2E602-3B28-42DB-A71B-34C50E9663CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0CD2E602-3B28-42DB-A71B-34C50E9663CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0CD2E602-3B28-42DB-A71B-34C50E9663CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0CD2E602-3B28-42DB-A71B-34C50E9663CE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CE635283-EE95-4F8E-B80A-2DF0E8E530AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CE635283-EE95-4F8E-B80A-2DF0E8E530AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CE635283-EE95-4F8E-B80A-2DF0E8E530AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{CE635283-EE95-4F8E-B80A-2DF0E8E530AE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{64D82C2D-4F93-4B4F-8FF5-5086C242F9D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{64D82C2D-4F93-4B4F-8FF5-5086C242F9D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{64D82C2D-4F93-4B4F-8FF5-5086C242F9D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{64D82C2D-4F93-4B4F-8FF5-5086C242F9D2}.Release|Any CPU.Build.0 = Release|Any CPU
+		{21C71457-3910-4BC1-937F-57B0172004CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{21C71457-3910-4BC1-937F-57B0172004CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{21C71457-3910-4BC1-937F-57B0172004CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{21C71457-3910-4BC1-937F-57B0172004CA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{35C0D65F-643E-42FA-9177-2BFFDE9AFA14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{35C0D65F-643E-42FA-9177-2BFFDE9AFA14}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{35C0D65F-643E-42FA-9177-2BFFDE9AFA14}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{35C0D65F-643E-42FA-9177-2BFFDE9AFA14}.Release|Any CPU.Build.0 = Release|Any CPU
+		{56563C41-59EA-4B7F-94DC-ADD5923EC087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{56563C41-59EA-4B7F-94DC-ADD5923EC087}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{56563C41-59EA-4B7F-94DC-ADD5923EC087}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{56563C41-59EA-4B7F-94DC-ADD5923EC087}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B34D6810-1A95-462F-A8DD-76E2B7FC5CEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B34D6810-1A95-462F-A8DD-76E2B7FC5CEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B34D6810-1A95-462F-A8DD-76E2B7FC5CEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B34D6810-1A95-462F-A8DD-76E2B7FC5CEE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F7CF971E-4FD8-4E3C-9BA1-0A0C84E2E72A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F7CF971E-4FD8-4E3C-9BA1-0A0C84E2E72A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F7CF971E-4FD8-4E3C-9BA1-0A0C84E2E72A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F7CF971E-4FD8-4E3C-9BA1-0A0C84E2E72A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F98DC946-BB11-444E-BD87-13CB07E5E107}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F98DC946-BB11-444E-BD87-13CB07E5E107}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F98DC946-BB11-444E-BD87-13CB07E5E107}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F98DC946-BB11-444E-BD87-13CB07E5E107}.Release|Any CPU.Build.0 = Release|Any CPU
+		{6089F7BD-6A47-4C8F-A55F-5B813BECA763}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6089F7BD-6A47-4C8F-A55F-5B813BECA763}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{6089F7BD-6A47-4C8F-A55F-5B813BECA763}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{6089F7BD-6A47-4C8F-A55F-5B813BECA763}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1C1556CC-A91E-4B69-A5E8-644052B1CB7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1C1556CC-A91E-4B69-A5E8-644052B1CB7B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1C1556CC-A91E-4B69-A5E8-644052B1CB7B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1C1556CC-A91E-4B69-A5E8-644052B1CB7B}.Release|Any CPU.Build.0 = Release|Any CPU
+		{44D6120C-A975-4551-9ED5-49A99047FEA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{44D6120C-A975-4551-9ED5-49A99047FEA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{44D6120C-A975-4551-9ED5-49A99047FEA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{44D6120C-A975-4551-9ED5-49A99047FEA8}.Release|Any CPU.Build.0 = Release|Any CPU
 		{2B03333F-3ACD-474C-862B-FA97D3BA03B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{2B03333F-3ACD-474C-862B-FA97D3BA03B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{2B03333F-3ACD-474C-862B-FA97D3BA03B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{2B03333F-3ACD-474C-862B-FA97D3BA03B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{2B03333F-3ACD-474C-862B-FA97D3BA03B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{2B03333F-3ACD-474C-862B-FA97D3BA03B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -225,42 +299,64 @@ Global
 		{A5006087-81B0-4C62-B847-50ED5C37069D}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{A5006087-81B0-4C62-B847-50ED5C37069D}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{A5006087-81B0-4C62-B847-50ED5C37069D}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A5006087-81B0-4C62-B847-50ED5C37069D}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A5006087-81B0-4C62-B847-50ED5C37069D}.Release|Any CPU.Build.0 = Release|Any CPU
 		{A5006087-81B0-4C62-B847-50ED5C37069D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C398E9E7-7FBF-4667-813C-D5E0DB3BE0B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C398E9E7-7FBF-4667-813C-D5E0DB3BE0B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C398E9E7-7FBF-4667-813C-D5E0DB3BE0B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C398E9E7-7FBF-4667-813C-D5E0DB3BE0B1}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 		HideSolutionNode = FALSE
 	EndGlobalSection
 	EndGlobalSection
 	GlobalSection(NestedProjects) = preSolution
 	GlobalSection(NestedProjects) = preSolution
 		{C4AEAB04-F341-4539-B6C0-52368FB4BF9E} = {C4BC9889-B49F-41B6-806B-F84941B2549B}
 		{C4AEAB04-F341-4539-B6C0-52368FB4BF9E} = {C4BC9889-B49F-41B6-806B-F84941B2549B}
-		{AAD719D5-5E31-4ED1-A60F-6EB92EFA66D9} = {6A35B453-52EC-48AF-89CA-D4A69800F131}
-		{42E76F87-92B6-45AB-BF07-6B811C0F2CAC} = {DA69F624-5398-4884-87E4-B816698CDE65}
-		{59319B72-38BE-4041-8E5C-FF6938874CE8} = {DA69F624-5398-4884-87E4-B816698CDE65}
 		{8D789F94-CB74-45FD-ACE7-92AF6E55042E} = {C4BC9889-B49F-41B6-806B-F84941B2549B}
 		{8D789F94-CB74-45FD-ACE7-92AF6E55042E} = {C4BC9889-B49F-41B6-806B-F84941B2549B}
-		{1CE2B3BE-056C-41E3-A5F5-6A1EF1D288BA} = {6A35B453-52EC-48AF-89CA-D4A69800F131}
 		{BA99C2A1-48F9-4FA5-B95A-9687A73B7CC9} = {C4BC9889-B49F-41B6-806B-F84941B2549B}
 		{BA99C2A1-48F9-4FA5-B95A-9687A73B7CC9} = {C4BC9889-B49F-41B6-806B-F84941B2549B}
 		{EE790D50-C632-46B9-A430-06FA2F2FDCD7} = {C4BC9889-B49F-41B6-806B-F84941B2549B}
 		{EE790D50-C632-46B9-A430-06FA2F2FDCD7} = {C4BC9889-B49F-41B6-806B-F84941B2549B}
-		{B19C15A5-F5EA-4CA7-936B-1166ABEE35C4} = {6A35B453-52EC-48AF-89CA-D4A69800F131}
-		{E37324FF-6BAF-4243-BA80-7C024CF5F29D} = {DA69F624-5398-4884-87E4-B816698CDE65}
-		{354335AB-CEE9-4434-A641-78058F6EFE56} = {DA69F624-5398-4884-87E4-B816698CDE65}
-		{455B68D2-C5B6-4BF4-A685-964B07AFAAF8} = {6A35B453-52EC-48AF-89CA-D4A69800F131}
-		{96771B3F-4D18-41A7-A75B-FF38E76AAC89} = {8A4582C8-DC59-4B61-BCE7-119FBAA99EFB}
-		{75E342F6-5445-4E7E-9143-6D9AE62C2B1E} = {6A35B453-52EC-48AF-89CA-D4A69800F131}
-		{FD80BB0F-0876-4F11-8D84-6657C8EF84CA} = {DA69F624-5398-4884-87E4-B816698CDE65}
-		{9E403E93-3284-486F-9A5F-1E15FCE426A5} = {DA69F624-5398-4884-87E4-B816698CDE65}
-		{B0243F99-2D3F-4CC6-AD71-E3F891B64724} = {DA69F624-5398-4884-87E4-B816698CDE65}
-		{E081EE41-D95F-4AD2-BC0B-4B562C0A2A47} = {DA69F624-5398-4884-87E4-B816698CDE65}
-		{BE982591-F4BB-42D9-ABD4-A5D44C65971E} = {DA69F624-5398-4884-87E4-B816698CDE65}
-		{0B083AE6-86CA-4E0B-AE02-59154D1FD005} = {6A35B453-52EC-48AF-89CA-D4A69800F131}
 		{6A7491D3-3C97-49BD-A71C-433AED657F30} = {C4BC9889-B49F-41B6-806B-F84941B2549B}
 		{6A7491D3-3C97-49BD-A71C-433AED657F30} = {C4BC9889-B49F-41B6-806B-F84941B2549B}
 		{1A953296-E869-4DE2-A693-FD5FCDE27057} = {C4BC9889-B49F-41B6-806B-F84941B2549B}
 		{1A953296-E869-4DE2-A693-FD5FCDE27057} = {C4BC9889-B49F-41B6-806B-F84941B2549B}
-		{0A0A6135-EA24-4307-95C2-CE1B7E164A5E} = {6A35B453-52EC-48AF-89CA-D4A69800F131}
-		{55DB4B6F-12E5-4A27-97F4-E97E135470FF} = {DA69F624-5398-4884-87E4-B816698CDE65}
-		{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981} = {3A76C5A2-79ED-49BC-8BDC-6A3A766FFA1B}
-		{896FA5EE-63A5-4EAC-9F09-346584BB4830} = {DA69F624-5398-4884-87E4-B816698CDE65}
-		{8C75AC94-C980-4FE1-9F79-6CED3C8665CE} = {43F352F3-4E2B-4ED7-901B-36E6671251F5}
-		{8D3E3E7D-452B-44F4-86CA-111003EA11ED} = {43F352F3-4E2B-4ED7-901B-36E6671251F5}
-		{2B03333F-3ACD-474C-862B-FA97D3BA03B5} = {DA69F624-5398-4884-87E4-B816698CDE65}
-		{D1334F29-5C19-4C7B-B62D-0A2F23AFB31C} = {DA69F624-5398-4884-87E4-B816698CDE65}
-		{A5006087-81B0-4C62-B847-50ED5C37069D} = {6A35B453-52EC-48AF-89CA-D4A69800F131}
+		{D0C7B22E-B0B6-4D62-BF7D-79EE4AAF1981} = {F2AB9C8F-CC30-495D-ACF4-9E4715F46C90}
+		{3AC35C9A-3344-4BBB-B789-06CEE2CD093E} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{8312A1B0-6FA8-47FE-9299-A76202AC920B} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{3ACAB196-DD18-4AD0-87BE-2F4CB062D2F7} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{9A9BE05B-1662-4A80-AE44-7D06071A1473} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{1758768B-81BC-434D-A4E6-4C821436373E} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{07137BC8-F3D8-425E-8A7F-1AAA383EA845} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{9D500098-648F-4EC3-9B89-9BAB7278EDF1} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{98B8D556-A024-42FA-B288-F6DA9EB2B338} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{6818EAB6-8D81-4FE9-8E5F-44D7EF18FF74} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{73C9A9F6-4254-450B-9BD0-B665DE298D9D} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{EBE99AF6-6F53-49DE-9B6C-0BF03731CD91} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{2F1FA614-9257-405F-815A-97EE72E046F4} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{39A4DA7A-6857-4594-8AE1-406F1F271B5C} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{356D6B62-1EDE-43F9-B78E-E160F4EC02E7} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
+		{1F83C880-645D-477B-A877-157F49660B0E} = {3A76C5A2-79ED-49BC-8BDC-6A3A766FFA1B}
+		{903FDE03-F9A6-4969-9028-842A53580667} = {3A76C5A2-79ED-49BC-8BDC-6A3A766FFA1B}
+		{A7C2BC93-DFB9-45B3-8CD9-EBA940BC23D1} = {3A76C5A2-79ED-49BC-8BDC-6A3A766FFA1B}
+		{3012F7C4-0181-40B8-9391-04EF794DE9A3} = {3A76C5A2-79ED-49BC-8BDC-6A3A766FFA1B}
+		{EA5C411C-AC81-4C51-BB85-CBE8F0E7BE1E} = {3A76C5A2-79ED-49BC-8BDC-6A3A766FFA1B}
+		{F3F532CF-BABD-4517-8C46-61869F814C58} = {9FCD621E-E710-4991-B45C-1BABC977BEEC}
+		{9D9EAC92-0CDC-4648-BC14-E602BCDF71A3} = {9FCD621E-E710-4991-B45C-1BABC977BEEC}
+		{126E8FB0-350D-4EA8-BDCD-708055112358} = {9FCD621E-E710-4991-B45C-1BABC977BEEC}
+		{0CD3CCCE-45CD-4CB0-820E-D6964A410FB9} = {9FCD621E-E710-4991-B45C-1BABC977BEEC}
+		{0CD2E602-3B28-42DB-A71B-34C50E9663CE} = {9FCD621E-E710-4991-B45C-1BABC977BEEC}
+		{CE635283-EE95-4F8E-B80A-2DF0E8E530AE} = {9FCD621E-E710-4991-B45C-1BABC977BEEC}
+		{64D82C2D-4F93-4B4F-8FF5-5086C242F9D2} = {9FCD621E-E710-4991-B45C-1BABC977BEEC}
+		{6D9DF750-BA0D-4ED7-8137-732E52894B1C} = {9FCD621E-E710-4991-B45C-1BABC977BEEC}
+		{21C71457-3910-4BC1-937F-57B0172004CA} = {6D9DF750-BA0D-4ED7-8137-732E52894B1C}
+		{1AF35754-036E-4D19-BE71-6144CEC0E1D5} = {AC3CD0BA-DE19-4333-9A42-3CFCC9FF0332}
+		{35C0D65F-643E-42FA-9177-2BFFDE9AFA14} = {1AF35754-036E-4D19-BE71-6144CEC0E1D5}
+		{56563C41-59EA-4B7F-94DC-ADD5923EC087} = {1AF35754-036E-4D19-BE71-6144CEC0E1D5}
+		{B34D6810-1A95-462F-A8DD-76E2B7FC5CEE} = {AC3CD0BA-DE19-4333-9A42-3CFCC9FF0332}
+		{F7CF971E-4FD8-4E3C-9BA1-0A0C84E2E72A} = {37DDE730-33D7-4400-9F12-84F0F2C0F319}
+		{F98DC946-BB11-444E-BD87-13CB07E5E107} = {37DDE730-33D7-4400-9F12-84F0F2C0F319}
+		{6089F7BD-6A47-4C8F-A55F-5B813BECA763} = {37DDE730-33D7-4400-9F12-84F0F2C0F319}
+		{1C1556CC-A91E-4B69-A5E8-644052B1CB7B} = {37DDE730-33D7-4400-9F12-84F0F2C0F319}
+		{44D6120C-A975-4551-9ED5-49A99047FEA8} = {37DDE730-33D7-4400-9F12-84F0F2C0F319}
+		{F2AB9C8F-CC30-495D-ACF4-9E4715F46C90} = {3A76C5A2-79ED-49BC-8BDC-6A3A766FFA1B}
+		{2B03333F-3ACD-474C-862B-FA97D3BA03B5} = {37DDE730-33D7-4400-9F12-84F0F2C0F319}
+		{D1334F29-5C19-4C7B-B62D-0A2F23AFB31C} = {37DDE730-33D7-4400-9F12-84F0F2C0F319}
+		{A5006087-81B0-4C62-B847-50ED5C37069D} = {37DDE730-33D7-4400-9F12-84F0F2C0F319}
+		{C398E9E7-7FBF-4667-813C-D5E0DB3BE0B1} = {EDE8E45E-A5D0-4F0E-B72C-7CC14146C60A}
 	EndGlobalSection
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {7945A4E4-ACDB-4F6E-95CA-6AC6E7C2CD59}
 		SolutionGuid = {7945A4E4-ACDB-4F6E-95CA-6AC6E7C2CD59}

+ 0 - 18
src/SignalR/benchmarkapps/Crankier/Crankier.csproj

@@ -1,18 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.2</TargetFramework>
-    <RootNamespace>Microsoft.AspNetCore.SignalR.CranksRevenge</RootNamespace>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <PackageReference Include="Microsoft.Extensions.CommandLineUtils.Sources" Version="$(MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion)" />
-    <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\..\src\Microsoft.AspNetCore.SignalR.Client\Microsoft.AspNetCore.SignalR.Client.csproj" />
-  </ItemGroup>
-
-</Project>

+ 0 - 35
src/SignalR/benchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks/Microsoft.AspNetCore.SignalR.Microbenchmarks.csproj

@@ -1,35 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.2</TargetFramework>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <Compile Include="..\..\src\Common\BinaryMessageFormatter.cs" Link="BinaryMessageFormatter.cs" />
-    <Compile Include="..\..\src\Common\BinaryMessageParser.cs" Link="BinaryMessageParser.cs" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\..\src\Microsoft.AspNetCore.Http.Connections.Client\Microsoft.AspNetCore.Http.Connections.Client.csproj" />
-    <ProjectReference Include="..\..\src\Microsoft.AspNetCore.Http.Connections\Microsoft.AspNetCore.Http.Connections.csproj" />
-    <ProjectReference Include="..\..\src\Microsoft.AspNetCore.SignalR.Core\Microsoft.AspNetCore.SignalR.Core.csproj" />
-    <ProjectReference Include="..\..\src\Microsoft.AspNetCore.SignalR.Common\Microsoft.AspNetCore.SignalR.Common.csproj" />
-    <ProjectReference Include="..\..\src\Microsoft.AspNetCore.SignalR.Client.Core\Microsoft.AspNetCore.SignalR.Client.Core.csproj" />
-    <ProjectReference Include="..\..\src\Microsoft.AspNetCore.SignalR.Protocols.MessagePack\Microsoft.AspNetCore.SignalR.Protocols.MessagePack.csproj" />
-    <ProjectReference Include="..\..\src\Microsoft.AspNetCore.SignalR.StackExchangeRedis\Microsoft.AspNetCore.SignalR.StackExchangeRedis.csproj" />
-    <ProjectReference Include="..\..\test\Microsoft.AspNetCore.SignalR.Tests.Utils\Microsoft.AspNetCore.SignalR.Tests.Utils.csproj" />
-    <ProjectReference Include="..\..\test\Microsoft.AspNetCore.SignalR.StackExchangeRedis.Tests\Microsoft.AspNetCore.SignalR.StackExchangeRedis.Tests.csproj" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <PackageReference Include="BenchmarkDotNet" Version="$(BenchmarkDotNetPackageVersion)" />
-    <PackageReference Include="Microsoft.AspNetCore.BenchmarkRunner.Sources" Version="$(MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion)" />
-    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="$(MicrosoftExtensionsDependencyInjectionPackageVersion)" />
-    <PackageReference Include="Microsoft.Extensions.ValueStopwatch.Sources" Version="$(MicrosoftExtensionsValueStopwatchSourcesPackageVersion)" PrivateAssets="All" />
-    <PackageReference Include="Moq" Version="$(MoqPackageVersion)" />
-    <PackageReference Include="System.Threading.Channels" Version="$(SystemThreadingChannelsPackageVersion)" />
-    <PackageReference Include="System.Threading.Tasks.Extensions" Version="$(SystemThreadingTasksExtensionsPackageVersion)" />
-    <PackageReference Include="System.Reactive.Linq" Version="$(SystemReactiveLinqPackageVersion)" />
-  </ItemGroup>
-</Project>

+ 3 - 0
src/SignalR/build.cmd

@@ -0,0 +1,3 @@
+@ECHO OFF
+SET RepoRoot=%~dp0..\..
+%RepoRoot%\build.cmd -LockFile %RepoRoot%\korebuild-lock.txt -projects %~dp0**\*.*proj %*

BIN
src/SignalR/build/Key.snk


+ 0 - 80
src/SignalR/build/dependencies.props

@@ -1,80 +0,0 @@
-<Project>
-  <PropertyGroup>
-    <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
-  </PropertyGroup>
-  <PropertyGroup Label="Package Versions">
-    <BenchmarkDotNetPackageVersion>0.10.13</BenchmarkDotNetPackageVersion>
-    <GoogleProtobufPackageVersion>3.1.0</GoogleProtobufPackageVersion>
-    <InternalAspNetCoreAnalyzersPackageVersion>2.2.0-rtm-181106-13</InternalAspNetCoreAnalyzersPackageVersion>
-    <InternalAspNetCoreSdkPackageVersion>2.2.0-preview2-20181011.2</InternalAspNetCoreSdkPackageVersion>
-    <MessagePackPackageVersion>1.7.3.4</MessagePackPackageVersion>
-    <MicrosoftAspNetCoreAllPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreAllPackageVersion>
-    <MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreAuthenticationCookiesPackageVersion>
-    <MicrosoftAspNetCoreAuthenticationCorePackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreAuthenticationCorePackageVersion>
-    <MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreAuthenticationJwtBearerPackageVersion>
-    <MicrosoftAspNetCoreAuthorizationPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreAuthorizationPackageVersion>
-    <MicrosoftAspNetCoreAuthorizationPolicyPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreAuthorizationPolicyPackageVersion>
-    <MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>2.2.0-rtm-181106-13</MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>
-    <MicrosoftAspNetCoreConnectionsAbstractionsPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreConnectionsAbstractionsPackageVersion>
-    <MicrosoftAspNetCoreCorsPackageVersion>2.2.0-preview3-35457</MicrosoftAspNetCoreCorsPackageVersion>
-    <MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreDiagnosticsEntityFrameworkCorePackageVersion>
-    <MicrosoftAspNetCoreDiagnosticsPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreDiagnosticsPackageVersion>
-    <MicrosoftAspNetCoreHostingAbstractionsPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreHostingAbstractionsPackageVersion>
-    <MicrosoftAspNetCoreHostingPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreHostingPackageVersion>
-    <MicrosoftAspNetCoreHttpAbstractionsPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreHttpAbstractionsPackageVersion>
-    <MicrosoftAspNetCoreHttpFeaturesPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreHttpFeaturesPackageVersion>
-    <MicrosoftAspNetCoreHttpPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreHttpPackageVersion>
-    <MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreIdentityEntityFrameworkCorePackageVersion>
-    <MicrosoftAspNetCoreMvcPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreMvcPackageVersion>
-    <MicrosoftAspNetCoreRoutingPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreRoutingPackageVersion>
-    <MicrosoftAspNetCoreServerIISIntegrationPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreServerIISIntegrationPackageVersion>
-    <MicrosoftAspNetCoreServerKestrelPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreServerKestrelPackageVersion>
-    <MicrosoftAspNetCoreStaticFilesPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreStaticFilesPackageVersion>
-    <MicrosoftAspNetCoreTestHostPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreTestHostPackageVersion>
-    <MicrosoftAspNetCoreTestingPackageVersion>2.2.0-rtm-181106-13</MicrosoftAspNetCoreTestingPackageVersion>
-    <MicrosoftAspNetCoreWebSocketsPackageVersion>2.2.0-rtm-35661</MicrosoftAspNetCoreWebSocketsPackageVersion>
-    <MicrosoftCSharpPackageVersion>4.5.0</MicrosoftCSharpPackageVersion>
-    <MicrosoftEntityFrameworkCoreDesignPackageVersion>2.2.0-rtm-35661</MicrosoftEntityFrameworkCoreDesignPackageVersion>
-    <MicrosoftEntityFrameworkCoreSqlServerPackageVersion>2.2.0-rtm-35661</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
-    <MicrosoftEntityFrameworkCoreToolsPackageVersion>2.2.0-rtm-35661</MicrosoftEntityFrameworkCoreToolsPackageVersion>
-    <MicrosoftExtensionsBuffersTestingSourcesPackageVersion>2.2.0-rtm-35661</MicrosoftExtensionsBuffersTestingSourcesPackageVersion>
-    <MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
-    <MicrosoftExtensionsConfigurationCommandLinePackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
-    <MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
-    <MicrosoftExtensionsConfigurationUserSecretsPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
-    <MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
-    <MicrosoftExtensionsDependencyInjectionPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsDependencyInjectionPackageVersion>
-    <MicrosoftExtensionsLoggingAbstractionsPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
-    <MicrosoftExtensionsLoggingConfigurationPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsLoggingConfigurationPackageVersion>
-    <MicrosoftExtensionsLoggingConsolePackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsLoggingConsolePackageVersion>
-    <MicrosoftExtensionsLoggingDebugPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsLoggingDebugPackageVersion>
-    <MicrosoftExtensionsLoggingPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsLoggingPackageVersion>
-    <MicrosoftExtensionsLoggingTestingPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsLoggingTestingPackageVersion>
-    <MicrosoftExtensionsObjectMethodExecutorSourcesPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsObjectMethodExecutorSourcesPackageVersion>
-    <MicrosoftExtensionsOptionsPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsOptionsPackageVersion>
-    <MicrosoftExtensionsValueStopwatchSourcesPackageVersion>2.2.0-rtm-181106-13</MicrosoftExtensionsValueStopwatchSourcesPackageVersion>
-    <MicrosoftNETCoreApp22PackageVersion>2.2.0-rtm-27105-02</MicrosoftNETCoreApp22PackageVersion>
-    <MicrosoftNETTestSdkPackageVersion>15.6.1</MicrosoftNETTestSdkPackageVersion>
-    <MoqPackageVersion>4.10.0</MoqPackageVersion>
-    <NETStandardLibrary20PackageVersion>2.0.3</NETStandardLibrary20PackageVersion>
-    <NewtonsoftJsonPackageVersion>11.0.2</NewtonsoftJsonPackageVersion>
-    <StackExchangeRedisPackageVersion>2.0.513</StackExchangeRedisPackageVersion>
-    <StackExchangeRedisStrongNamePackageVersion>1.2.6</StackExchangeRedisStrongNamePackageVersion>
-    <SystemBuffersPackageVersion>4.5.0</SystemBuffersPackageVersion>
-    <SystemIOPipelinesPackageVersion>4.5.2</SystemIOPipelinesPackageVersion>
-    <SystemMemoryPackageVersion>4.5.1</SystemMemoryPackageVersion>
-    <SystemNumericsVectorsPackageVersion>4.5.0</SystemNumericsVectorsPackageVersion>
-    <SystemReactiveLinqPackageVersion>3.1.1</SystemReactiveLinqPackageVersion>
-    <SystemReflectionEmitPackageVersion>4.3.0</SystemReflectionEmitPackageVersion>
-    <SystemRuntimeCompilerServicesUnsafePackageVersion>4.5.1</SystemRuntimeCompilerServicesUnsafePackageVersion>
-    <SystemSecurityPrincipalWindowsPackageVersion>4.5.0</SystemSecurityPrincipalWindowsPackageVersion>
-    <SystemThreadingChannelsPackageVersion>4.5.0</SystemThreadingChannelsPackageVersion>
-    <SystemThreadingTasksExtensionsPackageVersion>4.5.1</SystemThreadingTasksExtensionsPackageVersion>
-    <XunitAssertPackageVersion>2.3.1</XunitAssertPackageVersion>
-    <XunitExtensibilityCorePackageVersion>2.3.1</XunitExtensibilityCorePackageVersion>
-    <XunitPackageVersion>2.3.1</XunitPackageVersion>
-    <XunitRunnerVisualStudioPackageVersion>2.4.0</XunitRunnerVisualStudioPackageVersion>
-  </PropertyGroup>
-  <Import Project="$(DotNetPackageVersionPropsPath)" Condition=" '$(DotNetPackageVersionPropsPath)' != '' " />
-  <PropertyGroup Label="Package Versions: Pinned" />
-</Project>

+ 0 - 19
src/SignalR/build/repo.props

@@ -1,19 +0,0 @@
-<Project>
-  <Import Project="dependencies.props" />
-
-  <PropertyGroup>
-    <EnableBenchmarkValidation>true</EnableBenchmarkValidation>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <ProjectsToPack Include="$(RepositoryRoot)client-ts\Microsoft.AspNetCore.SignalR.Client.TS\*.csproj" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <ExcludeFromTest Include="$(RepositoryRoot)test\Microsoft.AspNetCore.SignalR.Tests.Utils\*.csproj" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <DotNetCoreRuntime Include="$(MicrosoftNETCoreApp22PackageVersion)" />
-  </ItemGroup>
-</Project>

+ 0 - 156
src/SignalR/build/repo.targets

@@ -1,156 +0,0 @@
-<Project>
-  <ItemGroup>
-    <NPMPackage Include="$(RepositoryRoot)clients/ts/signalr">
-      <TarName>aspnet-signalr</TarName>
-      <PackageId>@aspnet/signalr</PackageId>
-    </NPMPackage>
-    <NPMPackage Include="$(RepositoryRoot)clients/ts/signalr-protocol-msgpack">
-      <TarName>aspnet-signalr-protocol-msgpack</TarName>
-      <PackageId>@aspnet/signalr-protocol-msgpack</PackageId>
-    </NPMPackage>
-  </ItemGroup>
-
-  <PropertyGroup>
-    <!-- Pass the Java Package Version down to Gradle -->
-    <GradleOptions>-PpackageVersion="$(JavaPackageVersion)"</GradleOptions>
-    <!-- Disable gradle daemon on CI since the CI seems to try to wait for the daemon to shut down, which it doesn't do :) -->
-    <GradleOptions Condition="'$(CI)' == 'true'">$(GradleOptions) -Dorg.gradle.daemon=false</GradleOptions>
-
-    <RequireJava Condition="'$(CI)' == 'true'">true</RequireJava>
-  </PropertyGroup>
-
-  <PropertyGroup>
-    <RestoreDependsOn>$(RestoreDependsOn);RestoreNpm</RestoreDependsOn>
-  </PropertyGroup>
-  <Target Name="RestoreNpm" Condition="'$(PreflightRestore)' != 'True'">
-    <Message Text="Restoring NPM modules" Importance="high" />
-    <Exec Command="npm install --no-optional" WorkingDirectory="$(RepositoryRoot)clients/ts/common" />
-    <Exec Command="npm install --no-optional" WorkingDirectory="$(RepositoryRoot)clients/ts/FunctionalTests" />
-    <Exec Command="npm install --no-optional" WorkingDirectory="$(RepositoryRoot)clients/ts/signalr" />
-    <Exec Command="npm install --no-optional" WorkingDirectory="$(RepositoryRoot)clients/ts/signalr-protocol-msgpack" />
-  </Target>
-
-  <PropertyGroup>
-    <TestDependsOn>$(TestDependsOn);RunTSClientNodeTests;RunBrowserTests;RunJavaTests</TestDependsOn>
-  </PropertyGroup>
-
-  <Target Name="RunTSClientNodeTests">
-    <Message Text="Running JavaScript client Node tests" Importance="high" />
-    <Exec Command="npm test" WorkingDirectory="$(RepositoryRoot)clients/ts" IgnoreStandardErrorWarningFormat="true" />
-  </Target>
-
-  <Target Name="RunBrowserTests">
-    <Message Text="Running JavaScript client Browser tests" Importance="high" />
-    <Exec Command="npm run test:inner -- --no-color --configuration $(Configuration)" WorkingDirectory="$(RepositoryRoot)clients/ts/FunctionalTests" IgnoreStandardErrorWarningFormat="true" />
-  </Target>
-
-  <Target Name="RunJavaTests" Condition="'$(HasJava)' == 'true' AND '$(SkipJavaClient)' != 'true' ">
-    <Message Text="Running Java client tests" Importance="high" />
-    <Message Text="> gradlew $(GradleOptions) test" Importance="high" />
-    <Exec Command="./gradlew $(GradleOptions) test" WorkingDirectory="$(RepositoryRoot)clients/java/signalr" IgnoreStandardErrorWarningFormat="true" />
-  </Target>
-
-  <PropertyGroup>
-    <GetArtifactInfoDependsOn>$(GetArtifactInfoDependsOn);GetNpmArtifactInfo;GetJavaArtifactInfo</GetArtifactInfoDependsOn>
-  </PropertyGroup>
-
-  <Target Name="GetNpmArtifactInfo">
-    <ItemGroup>
-      <NPMPackage Update="%(NPMPackage)">
-        <PackageJson>$([System.IO.Path]::Combine(%(NPMPackage.FullPath), 'package.json'))</PackageJson>
-        <OutputTar>$([System.IO.Path]::Combine(%(NPMPackage.FullPath), '%(NPMPackage.TarName)-$(PackageVersion).tgz'))</OutputTar>
-        <ArtifactPath>$([System.IO.Path]::Combine($(BuildDir), '%(NPMPackage.TarName)-$(PackageVersion).tgz'))</ArtifactPath>
-      </NPMPackage>
-
-      <ArtifactInfo Include="%(NPMPackage.ArtifactPath)">
-        <ArtifactType>NpmPackage</ArtifactType>
-        <PackageId>%(NPMPackage.PackageId)</PackageId>
-        <Version>$(PackageVersion)</Version>
-        <Category>ship</Category>
-      </ArtifactInfo>
-    </ItemGroup>
-
-    <ItemGroup>
-      <FilesToExcludeFromSigning Include="%(NPMPackage.ArtifactPath);" />
-    </ItemGroup>
-  </Target>
-
-  <Target Name="GetJavaArtifactInfo" DependsOnTargets="DetectJava" Condition=" '$(SkipJavaClient)' != 'true' ">
-    <ItemGroup Condition="'$(HasJava)' == 'true'">
-      <ArtifactInfo Include="$(BuildDir)\%(Jars.Identity)">
-        <ArtifactType>JavaJar</ArtifactType>
-        <Version>$(JavaClientVersion)</Version>
-        <Category>ship</Category>
-      </ArtifactInfo>
-      <ArtifactInfo Include="$(BuildDir)\%(PomFile.Identity)">
-        <ArtifactType>MavenPOM</ArtifactType>
-        <Version>$(JavaClientVersion)</Version>
-        <Category>ship</Category>
-      </ArtifactInfo>
-
-      <FilesToSign Include="$(BuildDir)\%(Jars.Identity)" Certificate="$(JarSigningCertName)" />
-      <FilesToExcludeFromSigning Include="$(BuildDir)\%(PomFile.Identity)" />
-    </ItemGroup>
-  </Target>
-
-  <PropertyGroup>
-    <PrepareDependsOn>DetectJava;$(PrepareDependsOn)</PrepareDependsOn>
-  </PropertyGroup>
-  <Target Name="DetectJava">
-    <Exec Command="./gradlew $(GradleOptions)" WorkingDirectory="$(RepositoryRoot)clients/java/signalr" IgnoreExitCode="true" IgnoreStandardErrorWarningFormat="true">
-      <Output TaskParameter="ExitCode" PropertyName="JavaDetectExitCode" />
-    </Exec>
-
-    <Error Text="Failed to detect Java Runtime Environment (JRE)" Condition="'$(JavaDetectExitCode)' != 0 And '$(RequireJava)' == 'true'" />
-    <Message Text="Failed to detect Java Runtime Environment (JRE). Skipping Java client build." Importance="high" Condition="'$(JavaDetectExitCode)' != 0 And '$(RequireJava)' != 'true'" />
-    <Message Text="Successfully detected Java Runtime Environment (JRE)" Importance="high" Condition="'$(JavaDetectExitCode)' == 0" />
-    <!-- The build could still fail if the JDK isn't installed, but we can't reliably detect that without a bunch more code -->
-
-    <PropertyGroup Condition="'$(JavaDetectExitCode)' == '0'">
-      <HasJava>true</HasJava>
-    </PropertyGroup>
-  </Target>
-
-  <PropertyGroup>
-    <CompileDependsOn>Restore;BuildNPMPackages;$(CompileDependsOn);BuildJavaClient</CompileDependsOn>
-  </PropertyGroup>
-  <Target Name="BuildNPMPackages" DependsOnTargets="RestoreNpm;GetNpmArtifactInfo">
-    <Message Text="Building %(NPMPackage.PackageId)..." Importance="high" />
-    <Exec Command="npm run build" WorkingDirectory="%(NPMPackage.FullPath)" />
-    <Message Text="Building Browser Functional Tests..." Importance="high" />
-    <Exec Command="npm run build" WorkingDirectory="$(RepositoryRoot)clients/ts/FunctionalTests" IgnoreStandardErrorWarningFormat="true" />
-  </Target>
-
-  <Target Name="BuildJavaClient" Condition="'$(HasJava)' == 'true' AND '$(SkipJavaClient)' != 'true' " DependsOnTargets="GetJavaArtifactInfo">
-    <Message Text="Building Java client" Importance="high" />
-    <Message Text="> gradlew $(GradleOptions) compileJava" Importance="high" />
-    <Exec Command="./gradlew $(GradleOptions) compileJava" WorkingDirectory="$(RepositoryRoot)clients/java/signalr" />
-  </Target>
-
-  <PropertyGroup>
-    <PackageDependsOn>Compile;PackNPMPackages;$(PackageDependsOn);PackJavaClient</PackageDependsOn>
-  </PropertyGroup>
-  <Target Name="PackNPMPackages" DependsOnTargets="BuildNPMPackages">
-    <Message Text="Packing %(NPMPackage.PackageId)..." Importance="high" />
-    <Copy SourceFiles="%(NPMPackage.PackageJson)" DestinationFiles="%(NPMPackage.PackageJson).bak" />
-    <Exec Command="npm --no-git-tag-version --allow-same-version version $(PackageVersion)" WorkingDirectory="%(NPMPackage.FullPath)" />
-    <Exec Command="npm pack" WorkingDirectory="%(NPMPackage.FullPath)" />
-    <Delete Files="%(NPMPackage.ArtifactPath)" Condition="Exists('%(NPMPackage.ArtifactPath)')" />
-    <Move SourceFiles="%(NPMPackage.OutputTar)" DestinationFiles="%(NPMPackage.ArtifactPath)" />
-    <Move SourceFiles="%(NPMPackage.PackageJson).bak" DestinationFiles="%(NPMPackage.PackageJson)" />
-  </Target>
-
-  <ItemGroup>
-    <Jars Include="signalr-$(JavaPackageVersion).jar;signalr-$(JavaPackageVersion)-javadoc.jar;signalr-$(JavaPackageVersion)-sources.jar;" />
-    <PomFile Include="signalr-$(JavaPackageVersion).pom" />
-    <JavaBuildFiles Include="@(Jars);@(PomFile)"/>
-  </ItemGroup>
-
-  <Target Name="PackJavaClient" Condition="'$(HasJava)' == 'true' AND '$(SkipJavaClient)' != 'true' ">
-    <Message Text="Packing Java client" Importance="high" />
-    <Message Text="> gradlew $(GradleOptions) createPackage" Importance="high" />
-    <Exec Command="./gradlew $(GradleOptions) createPackage" WorkingDirectory="$(RepositoryRoot)clients/java/signalr" />
-    <Copy SourceFiles="$(RepositoryRoot)clients/java/signalr\build\libs\%(JavaBuildFiles.Identity)" DestinationFolder="$(BuildDir)" />
-  </Target>
-
-</Project>

+ 0 - 17
src/SignalR/build/sources.props

@@ -1,17 +0,0 @@
-<Project>
-  <Import Project="$(DotNetRestoreSourcePropsPath)" Condition="'$(DotNetRestoreSourcePropsPath)' != ''"/>
-
-  <PropertyGroup Label="RestoreSources">
-    <RestoreSources>$(DotNetRestoreSources)</RestoreSources>
-    <RestoreSources Condition="'$(DotNetBuildOffline)' != 'true' AND '$(AspNetUniverseBuildOffline)' != 'true' ">
-      $(RestoreSources);
-      https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;
-      https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json;
-      https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json;
-    </RestoreSources>
-    <RestoreSources Condition="'$(DotNetBuildOffline)' != 'true'">
-      $(RestoreSources);
-      https://api.nuget.org/v3/index.json;
-    </RestoreSources>
-  </PropertyGroup>
-</Project>

+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnection.Log.cs → src/SignalR/clients/csharp/Client.Core/src/HubConnection.Log.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnection.cs → src/SignalR/clients/csharp/Client.Core/src/HubConnection.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnectionBuilder.cs → src/SignalR/clients/csharp/Client.Core/src/HubConnectionBuilder.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnectionBuilderExtensions.cs → src/SignalR/clients/csharp/Client.Core/src/HubConnectionBuilderExtensions.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnectionExtensions.InvokeAsync.cs → src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.InvokeAsync.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnectionExtensions.InvokeAsyncGeneric.cs → src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.InvokeAsyncGeneric.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnectionExtensions.SendAsync.cs → src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.SendAsync.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnectionExtensions.StreamAsChannelAsync.cs → src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.StreamAsChannelAsync.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnectionExtensions.cs → src/SignalR/clients/csharp/Client.Core/src/HubConnectionExtensions.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnectionState.cs → src/SignalR/clients/csharp/Client.Core/src/HubConnectionState.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/IConnectionFactory.cs → src/SignalR/clients/csharp/Client.Core/src/IConnectionFactory.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/IHubConnectionBuilder.cs → src/SignalR/clients/csharp/Client.Core/src/IHubConnectionBuilder.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/Internal/ConnectionLogScope.cs → src/SignalR/clients/csharp/Client.Core/src/Internal/ConnectionLogScope.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/Internal/InvocationRequest.cs → src/SignalR/clients/csharp/Client.Core/src/Internal/InvocationRequest.cs


+ 24 - 0
src/SignalR/clients/csharp/Client.Core/src/Microsoft.AspNetCore.SignalR.Client.Core.csproj

@@ -0,0 +1,24 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <Description>Client for ASP.NET Core SignalR</Description>
+    <TargetFramework>netstandard2.0</TargetFramework>
+    <RootNamespace>Microsoft.AspNetCore.SignalR.Client</RootNamespace>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Compile Include="$(SignalRSharedSourceRoot)AwaitableThreadPool.cs" Link="AwaitableThreadPool.cs" />
+    <Compile Include="$(SignalRSharedSourceRoot)ForceAsyncAwaiter.cs" Link="ForceAsyncAwaiter.cs" />
+    <Compile Include="$(SignalRSharedSourceRoot)PipeWriterStream.cs" Link="PipeWriterStream.cs" />
+    <Compile Include="$(SignalRSharedSourceRoot)TimerAwaitable.cs" Link="Internal\TimerAwaitable.cs" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Reference Include="Microsoft.AspNetCore.SignalR.Common" />
+    <Reference Include="Microsoft.AspNetCore.SignalR.Protocols.Json" />
+    <Reference Include="Microsoft.Extensions.DependencyInjection" />
+    <Reference Include="Microsoft.Extensions.Logging" />
+    <Reference Include="System.Threading.Channels" />
+  </ItemGroup>
+
+</Project>

+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/Properties/AssemblyInfo.cs → src/SignalR/clients/csharp/Client.Core/src/Properties/AssemblyInfo.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client.Core/baseline.netcore.json → src/SignalR/clients/csharp/Client.Core/src/baseline.netcore.json


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client/HttpConnectionFactory.cs → src/SignalR/clients/csharp/Client/src/HttpConnectionFactory.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client/HubConnectionBuilderHttpExtensions.cs → src/SignalR/clients/csharp/Client/src/HubConnectionBuilderHttpExtensions.cs


+ 13 - 0
src/SignalR/clients/csharp/Client/src/Microsoft.AspNetCore.SignalR.Client.csproj

@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <Description>Client for ASP.NET Core SignalR</Description>
+    <TargetFramework>netstandard2.0</TargetFramework>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Reference Include="Microsoft.AspNetCore.SignalR.Client.Core" />
+    <Reference Include="Microsoft.AspNetCore.Http.Connections.Client" />
+  </ItemGroup>
+
+</Project>

+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.SignalR.Client/baseline.netcore.json → src/SignalR/clients/csharp/Client/src/baseline.netcore.json


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HeaderUserIdProvider.cs → src/SignalR/clients/csharp/Client/test/FunctionalTests/HeaderUserIdProvider.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubConnectionTests.cs → src/SignalR/clients/csharp/Client/test/FunctionalTests/HubConnectionTests.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubProtocolVersionTests.cs → src/SignalR/clients/csharp/Client/test/FunctionalTests/HubProtocolVersionTests.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/Hubs.cs → src/SignalR/clients/csharp/Client/test/FunctionalTests/Hubs.cs


+ 25 - 0
src/SignalR/clients/csharp/Client/test/FunctionalTests/Microsoft.AspNetCore.SignalR.Client.FunctionalTests.csproj

@@ -0,0 +1,25 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFrameworks>netcoreapp2.2;net461</TargetFrameworks>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="$(SignalRTestUtilsProject)" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Reference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
+    <Reference Include="Microsoft.AspNetCore.Diagnostics" />
+    <Reference Include="Microsoft.AspNetCore.Http" />
+    <Reference Include="Microsoft.AspNetCore.SignalR.Client" />
+    <Reference Include="Microsoft.AspNetCore.SignalR" />
+    <Reference Include="Microsoft.AspNetCore.TestHost" />
+    <Reference Include="System.Reactive.Linq" />
+  </ItemGroup>
+
+  <ItemGroup Condition="'$(TargetFramework)' == 'net461'">
+    <Reference Include="Microsoft.CSharp" />
+  </ItemGroup>
+
+</Project>

+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/Startup.cs → src/SignalR/clients/csharp/Client/test/FunctionalTests/Startup.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/VersionJsonHubProtocol.cs → src/SignalR/clients/csharp/Client/test/FunctionalTests/VersionJsonHubProtocol.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/VersionStartup.cs → src/SignalR/clients/csharp/Client/test/FunctionalTests/VersionStartup.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/HttpConnectionFactoryTests.cs → src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionFactoryTests.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/HttpConnectionTests.ConnectionLifecycle.cs → src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.ConnectionLifecycle.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/HttpConnectionTests.Helpers.cs → src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.Helpers.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/HttpConnectionTests.Negotiate.cs → src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.Negotiate.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/HttpConnectionTests.Transport.cs → src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.Transport.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/HttpConnectionTests.cs → src/SignalR/clients/csharp/Client/test/UnitTests/HttpConnectionTests.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/HubConnectionBuilderExtensionsTests.cs → src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionBuilderExtensionsTests.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/HubConnectionBuilderTests.cs → src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionBuilderTests.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/HubConnectionTests.ConnectionLifecycle.cs → src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.ConnectionLifecycle.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/HubConnectionTests.Extensions.cs → src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.Extensions.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/HubConnectionTests.Helpers.cs → src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.Helpers.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/HubConnectionTests.Protocol.cs → src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.Protocol.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/HubConnectionTests.cs → src/SignalR/clients/csharp/Client/test/UnitTests/HubConnectionTests.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/LongPollingTransportTests.cs → src/SignalR/clients/csharp/Client/test/UnitTests/LongPollingTransportTests.cs


+ 22 - 0
src/SignalR/clients/csharp/Client/test/UnitTests/Microsoft.AspNetCore.SignalR.Client.Tests.csproj

@@ -0,0 +1,22 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFrameworks>netcoreapp2.2;net461</TargetFrameworks>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Compile Include="$(SignalRSharedSourceRoot)MemoryBufferWriter.cs" Link="MemoryBufferWriter.cs" />
+    <Compile Include="$(SignalRSharedSourceRoot)TextMessageFormatter.cs" Link="TextMessageFormatter.cs" />
+    <Compile Include="$(SignalRSharedSourceRoot)TextMessageParser.cs" Link="TextMessageParser.cs" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="$(SignalRTestUtilsProject)" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Reference Include="Microsoft.AspNetCore.SignalR.Client" />
+    <Reference Include="Microsoft.Extensions.Logging" />
+  </ItemGroup>
+
+</Project>

+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/ResponseUtils.cs → src/SignalR/clients/csharp/Client/test/UnitTests/ResponseUtils.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/ServerSentEventsParserTests.cs → src/SignalR/clients/csharp/Client/test/UnitTests/ServerSentEventsParserTests.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/ServerSentEventsTransportTests.cs → src/SignalR/clients/csharp/Client/test/UnitTests/ServerSentEventsTransportTests.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/TestConnection.cs → src/SignalR/clients/csharp/Client/test/UnitTests/TestConnection.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/TestHttpMessageHandler.cs → src/SignalR/clients/csharp/Client/test/UnitTests/TestHttpMessageHandler.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/TestTransport.cs → src/SignalR/clients/csharp/Client/test/UnitTests/TestTransport.cs


+ 0 - 0
src/SignalR/test/Microsoft.AspNetCore.SignalR.Client.Tests/TestTransportFactory.cs → src/SignalR/clients/csharp/Client/test/UnitTests/TestTransportFactory.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.Http.Connections.Client/HttpConnection.Log.cs → src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.Log.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.Http.Connections.Client/HttpConnection.cs → src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnection.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.Http.Connections.Client/HttpConnectionOptions.cs → src/SignalR/clients/csharp/Http.Connections.Client/src/HttpConnectionOptions.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.Http.Connections.Client/Internal/AccessTokenHttpMessageHandler.cs → src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/AccessTokenHttpMessageHandler.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.Http.Connections.Client/Internal/ClientPipeOptions.cs → src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/ClientPipeOptions.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.Http.Connections.Client/Internal/ConnectionLogScope.cs → src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/ConnectionLogScope.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.Http.Connections.Client/Internal/Constants.cs → src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/Constants.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.Http.Connections.Client/Internal/DefaultTransportFactory.cs → src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/DefaultTransportFactory.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.Http.Connections.Client/Internal/ITransport.cs → src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/ITransport.cs


+ 0 - 0
src/SignalR/src/Microsoft.AspNetCore.Http.Connections.Client/Internal/ITransportFactory.cs → src/SignalR/clients/csharp/Http.Connections.Client/src/Internal/ITransportFactory.cs


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio