Browse Source

Merge branch 'release/2.1' into release/2.2

Nate McMaster 7 years ago
parent
commit
22f3166fa6
100 changed files with 756 additions and 643 deletions
  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
     clean: true
   - task: NodeTool@0
+    displayName: Install Node 10.x
     inputs:
       versionSpec: 10.x
   - ${{ if and(eq(parameters.agentOs, 'Windows'), eq(parameters.codeSign, 'true')) }}:

+ 1 - 0
.gitignore

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

+ 2 - 1
Directory.Build.props

@@ -76,7 +76,7 @@
 
     <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>
     <IsTestAssetProject Condition="$(RepoRelativeProjectDir.Contains('testassets'))">true</IsTestAssetProject>
     <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\SharedFx.Common.props"  Condition="'$(MSBuildProjectExtension)' == '.shfxproj'" />
   <Import Project="eng\targets\Wix.Common.props"  Condition="'$(MSBuildProjectExtension)' == '.wixproj'" />
+  <Import Project="eng\targets\Npm.Common.props"  Condition="'$(MSBuildProjectExtension)' == '.npmproj'" />
 
 </Project>

+ 1 - 0
Directory.Build.targets

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

+ 0 - 1
build/buildorder.props

@@ -10,7 +10,6 @@
     <RepositoryBuildOrder Include="EntityFrameworkCore" Order="8" />
     <RepositoryBuildOrder Include="MvcPrecompilation" Order="15" RootPath="$(RepositoryRoot)src\MvcPrecompilation\" />
     <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="Templating" Order="17" RootPath="$(RepositoryRoot)src\Templating\" />
   </ItemGroup>

+ 3 - 3
build/dependencies.props

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

+ 20 - 5
build/repo.props

@@ -64,7 +64,9 @@
                       $(RepositoryRoot)src\Middleware\WebSockets\samples\**\*.csproj;
                       $(RepositoryRoot)src\Middleware\NodeServices.Sockets\**\*.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>
 
@@ -72,7 +74,9 @@
     <!-- Project selection can be overridden on the command line by passing in -projects -->
     <When Condition="'$(Projects)' != ''">
       <ItemGroup>
-        <ProjectToBuild Include="$(Projects)" Exclude="@(ProjectToExclude)" />
+        <ProjectToBuild Include="$(Projects)" Exclude="@(ProjectToExclude)">
+          <RestoreInParallel Condition="'%(Extension)' == '.npmproj'">false</RestoreInParallel>
+        </ProjectToBuild>
       </ItemGroup>
     </When>
     <Otherwise>
@@ -81,14 +85,21 @@
 
         <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">
           <!-- 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-x86'">Platform=x86</AdditionalProperties>
         </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="
                           $(RepositoryRoot)src\DefaultBuilder\**\*.*proj;
                           $(RepositoryRoot)src\Features\JsonPatch\**\*.*proj;
@@ -108,11 +119,15 @@
                           $(RepositoryRoot)src\Mvc\**\*.*proj;
                           $(RepositoryRoot)src\Azure\**\*.*proj;
                           $(RepositoryRoot)src\MusicStore\**\*.*proj;
+                          $(RepositoryRoot)src\SignalR\**\*.csproj;
                           "
                         Exclude="
                           @(ProjectToExclude);
+                          $(RepositoryRoot)**\node_modules\**\*;
                           $(RepositoryRoot)**\bin\**\*;
-                          $(RepositoryRoot)**\obj\**\*;" />
+                          $(RepositoryRoot)**\obj\**\*;">
+          <RestoreInParallel Condition="'%(Extension)' == '.npmproj'">false</RestoreInParallel>
+        </ProjectToBuild>
       </ItemGroup>
     </Otherwise>
   </Choose>

+ 0 - 8
build/repo.targets

@@ -18,7 +18,6 @@
     <PrepareDependsOn>SetTeamCityBuildNumberToVersion;$(PrepareDependsOn)</PrepareDependsOn>
     <PrepareDependsOn Condition="'$(_ProjectsOnly)' != 'true'">$(PrepareDependsOn);VerifyPackageArtifactConfig;VerifyExternalDependencyConfig;PrepareOutputPaths</PrepareDependsOn>
     <CleanDependsOn>$(CleanDependsOn);CleanArtifacts;CleanRepoArtifacts</CleanDependsOn>
-    <RestoreDependsOn Condition=" '$(SkipNpm)' != 'true' ">$(RestoreDependsOn);RestoreNpm</RestoreDependsOn>
     <RestoreDependsOn>$(RestoreDependsOn);InstallDotNet;RestoreProjects</RestoreDependsOn>
     <CompileDependsOn>$(CompileDependsOn);BuildProjects;PackSharedSources</CompileDependsOn>
     <CompileDependsOn Condition="'$(_ProjectsOnly)' != 'true'">$(CompileDependsOn);PackProjects;BuildRepositories;BuildSharedFx</CompileDependsOn>
@@ -32,13 +31,6 @@
     <GetArtifactInfoDependsOn  Condition="'$(_ProjectsOnly)' != 'true'">$(GetArtifactInfoDependsOn);ResolveRepoInfo</GetArtifactInfoDependsOn>
   </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">
     <MakeDir Directories="$(ArtifactsDir);$(BuildDir)" />
   </Target>

+ 0 - 1
build/submodules.props

@@ -46,6 +46,5 @@
 
   <ItemGroup>
     <ShippedRepository Include="MvcPrecompilation" RootPath="$(RepositoryRoot)src\MvcPrecompilation\"/>
-    <ShippedRepository Include="SignalR" RootPath="$(RepositoryRoot)src\SignalR\" />
   </ItemGroup>
 </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.
 
-: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.
 
 ## 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="System.Text.Encodings.Web" Version="[4.5.0, )" />
   </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-->
   <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.Http.Extensions' ">
     <BaselinePackageVersion>2.2.0</BaselinePackageVersion>
@@ -1033,6 +1078,116 @@
     <BaselinePackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="[2.2.0, )" />
     <BaselinePackageReference Include="Microsoft.Extensions.Options" Version="[2.2.0, )" />
   </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-->
   <PropertyGroup Condition=" '$(PackageId)' == 'Microsoft.AspNetCore.SpaServices.Extensions' ">
     <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.Html.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.Features" 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" 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" 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.UserSecrets" Version="$(MicrosoftExtensionsConfigurationUserSecretsPackageVersion)" />
     <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.DependencyModel" Version="$(MicrosoftExtensionsDependencyModelPackageVersion)" />
     <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.Principal.Windows" Version="$(SystemSecurityPrincipalWindowsPackageVersion)" />
     <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)" />
 
   </ItemGroup>
 
   <ItemGroup Label="External dependencies">
     <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.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. -->
     <LatestPackageReference Include="Newtonsoft.Json" Version="9.0.1" Condition="'$(UseMSBuildJsonNet)' == 'true'" />
     <!-- 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="Serilog.Extensions.Logging" Version="$(SerilogExtensionsLoggingPackageVersion)" />
     <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>
 
 </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.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.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>
 </Project>

+ 28 - 2
eng/scripts/CodeCheck.ps1

@@ -15,11 +15,20 @@ $repoRoot = Resolve-Path "$PSScriptRoot/../../"
 
 [string[]] $errors = @()
 
+function LogError([string]$message) {
+    Write-Host -f Red "error: $message"
+    $script:errors += $message
+}
+
 try {
     #
     # Solutions
     #
 
+    if ($ci) {
+        & $repoRoot/build.cmd /t:InstallDotNet
+    }
+
     Write-Host "Checking that solutions are up to date"
 
     Get-ChildItem "$repoRoot/*.sln" -Recurse | % {
@@ -31,7 +40,7 @@ try {
             | % {
                 $proj = Join-Path $slnDir $_
                 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-generating ProjectReference.props"
     Invoke-Block {
         [string[]] $generateArgs = @()
         if ($ci) {
@@ -50,16 +60,32 @@ try {
         & $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"
     & git diff --ignore-space-at-eol --exit-code
     if ($LastExitCode -ne 0) {
         $status = git status -s | Out-String
         $status = $status -replace "`n","`n    "
-        $errors += "Generated code is not up to date."
+        LogError "Generated code is not up to date."
     }
 }
 finally {
+    Write-Host ""
+    Write-Host "Summary:"
+    Write-Host ""
+    Write-Host "   $($errors.Length) error(s)"
+    Write-Host ""
+
     foreach ($err in $errors) {
+
         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": {
-        "version": "2.2.100"
+        "version": "2.2.102"
     },
     "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
 VisualStudioVersion = 15.0.27016.1
 MinimumVisualStudioVersion = 15.0.26730.03
@@ -28,8 +28,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.AzureA
 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}"
 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}"
 EndProject
 Global
@@ -54,10 +52,6 @@ Global
 		{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.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.Build.0 = Debug|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}
 		{2B2C37FF-9249-4EA4-9A7F-038B55A15C2C} = {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}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution

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

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

+ 1 - 1
src/Http/HttpAbstractions.sln

@@ -91,7 +91,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.StaticFiles", "..\Middleware\StaticFiles\src\Microsoft.AspNetCore.StaticFiles.csproj", "{A0C7AE95-BBE7-4F75-9508-F5881C8A456D}"
 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
 Global
 	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
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServerComparison.TestSites", "testassets\ServerComparison.TestSites\ServerComparison.TestSites.csproj", "{9D402831-ED2C-4026-925E-30F48371064A}"
 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
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution

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

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

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

@@ -1,7 +1,10 @@
 <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>
 </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
-========
-
-**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.
 
 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 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
 
 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
 VisualStudioVersion = 15.0.27110.0
 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}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SignalRSamples", "samples\SignalRSamples\SignalRSamples.csproj", "{C4AEAB04-F341-4539-B6C0-52368FB4BF9E}"
 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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
 Global
 	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}.Release|Any CPU.ActiveCfg = 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.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.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.Build.0 = Debug|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}.Release|Any CPU.ActiveCfg = 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.Build.0 = Debug|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}.Release|Any CPU.ActiveCfg = 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.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.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.Build.0 = Debug|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}.Release|Any CPU.ActiveCfg = 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
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 	EndGlobalSection
 	GlobalSection(NestedProjects) = preSolution
 		{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}
-		{1CE2B3BE-056C-41E3-A5F5-6A1EF1D288BA} = {6A35B453-52EC-48AF-89CA-D4A69800F131}
 		{BA99C2A1-48F9-4FA5-B95A-9687A73B7CC9} = {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}
 		{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
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		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


Some files were not shown because too many files changed in this diff