diff --git a/Directory.Build.props b/Directory.Build.props
index 272280dc60..ef016280ea 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -46,7 +46,8 @@
nugetaspnet@microsoft.com
- https://go.microsoft.com/fwlink/?LinkID=288859
+ packageIcon.png
+ $(MSBuildThisFileDirectory)packageIcon.png
https://asp.net
$(MSBuildProjectDirectory)
@@ -55,6 +56,10 @@
netcoreapp3.1
+
+
+
+
true
@@ -86,7 +91,7 @@
aspnetcore-targeting-pack
- false
+ false
+
+ $(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).0.0
+
+
diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props
index c139969aa4..60adba37fa 100644
--- a/eng/PatchConfig.props
+++ b/eng/PatchConfig.props
@@ -15,7 +15,14 @@ Directory.Build.props checks this property using the following condition:
+ Microsoft.Net.Http.Headers;
+ Microsoft.AspNetCore.CookiePolicy;
Microsoft.AspNetCore.DataProtection.EntityFrameworkCore;
+ @microsoft/signalr;
+ Microsoft.Net.Http.Headers;
+ Microsoft.AspNetCore.Http.Abstractions;
+ Microsoft.AspNetCore.Http.Features;
+ Microsoft.AspNetCore.CookiePolicy;
diff --git a/eng/Versions.props b/eng/Versions.props
index c80d51925b..b2bcda1840 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -238,7 +238,7 @@
4.2.1
4.2.1
3.8.0
- 2.23.1
+ 2.23.2
3.0.0
3.0.0
3.0.0
diff --git a/eng/targets/ReferenceAssembly.targets b/eng/targets/ReferenceAssembly.targets
index 765cc16932..418cc77518 100644
--- a/eng/targets/ReferenceAssembly.targets
+++ b/eng/targets/ReferenceAssembly.targets
@@ -52,6 +52,7 @@
<_RefSourceOutputPath>$([System.IO.Directory]::GetParent('$(MSBuildProjectDirectory)'))/ref/
<_RefSourceFileName>$(AssemblyName).$(_RefSourceFileTFM).cs
+ <_ManualRefSourceFileName>$(AssemblyName).Manual.cs
<_RefSourceFileOutputPath>$(_RefSourceOutputPath)$(_RefSourceFileName)
@@ -87,6 +88,12 @@
+ <_ManualReferenceAssemblyContent />
+ <_ManualReferenceAssemblyContent Condition="Exists('$(_RefSourceOutputPath)$(_ManualRefSourceFileName)')">
+ ]]>
+
+
diff --git a/eng/tools/RepoTasks/RepoTasks.csproj b/eng/tools/RepoTasks/RepoTasks.csproj
index 5bef776106..68d4cd23fb 100644
--- a/eng/tools/RepoTasks/RepoTasks.csproj
+++ b/eng/tools/RepoTasks/RepoTasks.csproj
@@ -12,14 +12,14 @@
-
+
-
-
-
+
+
+
diff --git a/packageIcon.png b/packageIcon.png
new file mode 100644
index 0000000000..a0f1fdbf4d
Binary files /dev/null and b/packageIcon.png differ
diff --git a/src/Analyzers/Analyzers/src/Microsoft.AspNetCore.Analyzers.csproj b/src/Analyzers/Analyzers/src/Microsoft.AspNetCore.Analyzers.csproj
index feec3324be..cc4201ca79 100644
--- a/src/Analyzers/Analyzers/src/Microsoft.AspNetCore.Analyzers.csproj
+++ b/src/Analyzers/Analyzers/src/Microsoft.AspNetCore.Analyzers.csproj
@@ -25,6 +25,7 @@
+
diff --git a/src/Analyzers/Analyzers/src/Microsoft.AspNetCore.Analyzers.nuspec b/src/Analyzers/Analyzers/src/Microsoft.AspNetCore.Analyzers.nuspec
index f906ece217..106615a7da 100644
--- a/src/Analyzers/Analyzers/src/Microsoft.AspNetCore.Analyzers.nuspec
+++ b/src/Analyzers/Analyzers/src/Microsoft.AspNetCore.Analyzers.nuspec
@@ -2,10 +2,12 @@
$CommonMetadataElements$
+ packageIcon.png
+
diff --git a/src/Components/Blazor/Build/src/Microsoft.AspNetCore.Blazor.Build.csproj b/src/Components/Blazor/Build/src/Microsoft.AspNetCore.Blazor.Build.csproj
index 35853a4b9e..82968f4999 100644
--- a/src/Components/Blazor/Build/src/Microsoft.AspNetCore.Blazor.Build.csproj
+++ b/src/Components/Blazor/Build/src/Microsoft.AspNetCore.Blazor.Build.csproj
@@ -23,6 +23,7 @@
+
diff --git a/src/Components/Blazor/Build/src/Microsoft.AspNetCore.Blazor.Build.nuspec b/src/Components/Blazor/Build/src/Microsoft.AspNetCore.Blazor.Build.nuspec
index ab73599f0b..feffe95c50 100644
--- a/src/Components/Blazor/Build/src/Microsoft.AspNetCore.Blazor.Build.nuspec
+++ b/src/Components/Blazor/Build/src/Microsoft.AspNetCore.Blazor.Build.nuspec
@@ -5,6 +5,7 @@
+ packageIcon.png
@@ -12,5 +13,6 @@
+
diff --git a/src/Components/Blazor/DevServer/src/Microsoft.AspNetCore.Blazor.DevServer.csproj b/src/Components/Blazor/DevServer/src/Microsoft.AspNetCore.Blazor.DevServer.csproj
index d18ab7c9e4..eada2c3e82 100644
--- a/src/Components/Blazor/DevServer/src/Microsoft.AspNetCore.Blazor.DevServer.csproj
+++ b/src/Components/Blazor/DevServer/src/Microsoft.AspNetCore.Blazor.DevServer.csproj
@@ -33,6 +33,7 @@
+
diff --git a/src/Components/Blazor/DevServer/src/Microsoft.AspNetCore.Blazor.DevServer.nuspec b/src/Components/Blazor/DevServer/src/Microsoft.AspNetCore.Blazor.DevServer.nuspec
index 5142ba2080..b59725fc14 100644
--- a/src/Components/Blazor/DevServer/src/Microsoft.AspNetCore.Blazor.DevServer.nuspec
+++ b/src/Components/Blazor/DevServer/src/Microsoft.AspNetCore.Blazor.DevServer.nuspec
@@ -2,10 +2,12 @@
$CommonMetadataElements$
+ packageIcon.png
+
diff --git a/src/Components/Blazor/Templates/src/Microsoft.AspNetCore.Blazor.Templates.csproj b/src/Components/Blazor/Templates/src/Microsoft.AspNetCore.Blazor.Templates.csproj
index c91a32128d..640d8f21d0 100644
--- a/src/Components/Blazor/Templates/src/Microsoft.AspNetCore.Blazor.Templates.csproj
+++ b/src/Components/Blazor/Templates/src/Microsoft.AspNetCore.Blazor.Templates.csproj
@@ -15,6 +15,10 @@
false
+
+
+
+
diff --git a/src/Components/Blazor/Templates/src/Microsoft.AspNetCore.Blazor.Templates.nuspec b/src/Components/Blazor/Templates/src/Microsoft.AspNetCore.Blazor.Templates.nuspec
index 70b93d7253..cde7bc4c1f 100644
--- a/src/Components/Blazor/Templates/src/Microsoft.AspNetCore.Blazor.Templates.nuspec
+++ b/src/Components/Blazor/Templates/src/Microsoft.AspNetCore.Blazor.Templates.nuspec
@@ -5,11 +5,13 @@
+ packageIcon.png
+
diff --git a/src/Components/Components/src/Microsoft.AspNetCore.Components.csproj b/src/Components/Components/src/Microsoft.AspNetCore.Components.csproj
index 4c0a31a3f6..5fe8fe7f36 100644
--- a/src/Components/Components/src/Microsoft.AspNetCore.Components.csproj
+++ b/src/Components/Components/src/Microsoft.AspNetCore.Components.csproj
@@ -55,6 +55,7 @@
+
diff --git a/src/Components/Components/src/Microsoft.AspNetCore.Components.multitarget.nuspec b/src/Components/Components/src/Microsoft.AspNetCore.Components.multitarget.nuspec
index 3c4fee8be5..ada9186afa 100644
--- a/src/Components/Components/src/Microsoft.AspNetCore.Components.multitarget.nuspec
+++ b/src/Components/Components/src/Microsoft.AspNetCore.Components.multitarget.nuspec
@@ -15,11 +15,13 @@
+ packageIcon.png
+
diff --git a/src/Components/Components/src/Microsoft.AspNetCore.Components.netcoreapp.nuspec b/src/Components/Components/src/Microsoft.AspNetCore.Components.netcoreapp.nuspec
index 80f61e7f17..3d1738ac21 100644
--- a/src/Components/Components/src/Microsoft.AspNetCore.Components.netcoreapp.nuspec
+++ b/src/Components/Components/src/Microsoft.AspNetCore.Components.netcoreapp.nuspec
@@ -9,11 +9,13 @@
+ packageIcon.png
+
diff --git a/src/Framework/ref/Microsoft.AspNetCore.App.Ref.csproj b/src/Framework/ref/Microsoft.AspNetCore.App.Ref.csproj
index a60b73a3cd..50c2531827 100644
--- a/src/Framework/ref/Microsoft.AspNetCore.App.Ref.csproj
+++ b/src/Framework/ref/Microsoft.AspNetCore.App.Ref.csproj
@@ -38,10 +38,17 @@ This package is an internal implementation of the .NET Core SDK and is not meant
true
+
+ MSB3243
FrameworkList.xml
$(ArtifactsObjDir)$(FrameworkListFileName)
+
+
+ $(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion).0
+ $(ReferencePackSharedFxVersion)-$(VersionSuffix)
+ $(ArtifactsObjDir)ref\PlatformManifest.txt
@@ -80,7 +87,7 @@ This package is an internal implementation of the .NET Core SDK and is not meant
-
+
@@ -95,6 +102,7 @@ This package is an internal implementation of the .NET Core SDK and is not meant
@@ -111,6 +119,7 @@ This package is an internal implementation of the .NET Core SDK and is not meant
Exclude="
@(_SelectedExtensionsRefAssemblies);
@(ReferencePathWithRefAssemblies->WithMetadataValue('NuGetPackageId', 'Microsoft.NETCore.App.Ref'));
+ @(ReferencePathWithRefAssemblies->WithMetadataValue('IsReferenceAssembly', 'false'));
@(ReferencePathWithRefAssemblies->WithMetadataValue('ReferenceGrouping', 'Microsoft.NETCore.App'));" />
+
+
+
+
-
+
@@ -130,9 +151,10 @@ This package is an internal implementation of the .NET Core SDK and is not meant
DependsOnTargets="ResolveReferences"
Inputs="$(MSBuildAllProjects)"
Outputs="$(TargetDir)$(PackageConflictManifestFileName)">
+
<_AspNetCoreAppPackageOverrides Include="@(ReferencePath->'%(NuGetPackageId)|%(NuGetPackageVersion)')" Condition=" '%(ReferencePath.NuGetPackageId)' != 'Microsoft.NETCore.App' AND '%(ReferencePath.NuGetSourceType)' == 'Package' " />
- <_AspNetCoreAppPackageOverrides Include="@(ReferencePath->'%(FileName)|$(SharedFxVersion)')" Condition=" '%(ReferencePath.ReferenceSourceTarget)' == 'ProjectReference' " />
+ <_AspNetCoreAppPackageOverrides Include="@(ReferencePath->'%(FileName)|$(ReferencePackSharedFxVersion)')" Condition=" '%(ReferencePath.ReferenceSourceTarget)' == 'ProjectReference' AND '%(ReferencePath.IsReferenceAssembly)' == 'true' " />
+
+
+
+
+
+
+ <_Parameter1>TargetingPackDependencies
+ <_Parameter2>@(_TargetingPackDependencies)
+
+
<_Parameter1>RepositoryCommit
<_Parameter2>$(SourceRevisionId)
diff --git a/src/Framework/test/TargetingPackTests.cs b/src/Framework/test/TargetingPackTests.cs
index 8222092260..ec8a646f48 100644
--- a/src/Framework/test/TargetingPackTests.cs
+++ b/src/Framework/test/TargetingPackTests.cs
@@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore
_targetingPackRoot = Path.Combine(TestData.GetTestDataValue("TargetingPackLayoutRoot"), "packs", "Microsoft.AspNetCore.App.Ref", TestData.GetTestDataValue("TargetingPackVersion"));
}
- [Fact]
+ [Fact(Skip="https://github.com/aspnet/AspNetCore/issues/14832")]
public void AssembliesAreReferenceAssemblies()
{
IEnumerable dlls = Directory.GetFiles(_targetingPackRoot, "*.dll", SearchOption.AllDirectories);
@@ -55,12 +55,19 @@ namespace Microsoft.AspNetCore
});
}
- [Fact]
+ [Fact(Skip="https://github.com/aspnet/AspNetCore/issues/14832")]
public void PlatformManifestListsAllFiles()
{
var platformManifestPath = Path.Combine(_targetingPackRoot, "data", "PlatformManifest.txt");
- var expectedAssemblies = TestData.GetSharedFxDependencies()
+ var expectedAssemblies = TestData.GetTargetingPackDependencies()
.Split(';', StringSplitOptions.RemoveEmptyEntries)
+ .Select(i =>
+ {
+ var fileName = Path.GetFileName(i);
+ return fileName.EndsWith(".dll", StringComparison.Ordinal)
+ ? fileName.Substring(0, fileName.Length - 4)
+ : fileName;
+ })
.ToHashSet();
_output.WriteLine("==== file contents ====");
diff --git a/src/Framework/test/TestData.cs b/src/Framework/test/TestData.cs
index ede8565f85..594f7693a4 100644
--- a/src/Framework/test/TestData.cs
+++ b/src/Framework/test/TestData.cs
@@ -18,6 +18,8 @@ namespace Microsoft.AspNetCore
public static string GetSharedFxDependencies() => GetTestDataValue("SharedFxDependencies");
+ public static string GetTargetingPackDependencies() => GetTestDataValue("TargetingPackDependencies");
+
public static string GetTestDataValue(string key)
=> typeof(TestData).Assembly.GetCustomAttributes().Single(d => d.Key == key).Value;
}
diff --git a/src/Http/Routing.Abstractions/ref/Microsoft.AspNetCore.Routing.Abstractions.Manual.cs b/src/Http/Routing.Abstractions/ref/Microsoft.AspNetCore.Routing.Abstractions.Manual.cs
new file mode 100644
index 0000000000..9a0e3418cf
--- /dev/null
+++ b/src/Http/Routing.Abstractions/ref/Microsoft.AspNetCore.Routing.Abstractions.Manual.cs
@@ -0,0 +1,13 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System.Runtime.CompilerServices;
+using Microsoft.AspNetCore.Routing;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Http.Features;
+
+[assembly: TypeForwardedTo(typeof(IEndpointFeature))]
+[assembly: TypeForwardedTo(typeof(IRouteValuesFeature))]
+[assembly: TypeForwardedTo(typeof(Endpoint))]
+[assembly: TypeForwardedTo(typeof(EndpointMetadataCollection))]
+[assembly: TypeForwardedTo(typeof(RouteValueDictionary))]
diff --git a/src/Http/Routing.Abstractions/ref/Microsoft.AspNetCore.Routing.Abstractions.csproj b/src/Http/Routing.Abstractions/ref/Microsoft.AspNetCore.Routing.Abstractions.csproj
index c4eba5614a..1d5d2fbc9c 100644
--- a/src/Http/Routing.Abstractions/ref/Microsoft.AspNetCore.Routing.Abstractions.csproj
+++ b/src/Http/Routing.Abstractions/ref/Microsoft.AspNetCore.Routing.Abstractions.csproj
@@ -5,6 +5,7 @@
+
diff --git a/src/Installers/Debian/Directory.Build.targets b/src/Installers/Debian/Directory.Build.targets
index fe959cd4e3..571343b359 100644
--- a/src/Installers/Debian/Directory.Build.targets
+++ b/src/Installers/Debian/Directory.Build.targets
@@ -23,7 +23,7 @@
-
+
diff --git a/src/Installers/Rpm/Directory.Build.targets b/src/Installers/Rpm/Directory.Build.targets
index 9a4eb927b0..3dc3ab8202 100644
--- a/src/Installers/Rpm/Directory.Build.targets
+++ b/src/Installers/Rpm/Directory.Build.targets
@@ -32,7 +32,7 @@
-
+
DATE=$([System.DateTime]::UtcNow.ToString(ddd MMM dd yyyy))
diff --git a/src/Installers/Windows/GenerateNugetPackageWithMsi.ps1 b/src/Installers/Windows/GenerateNugetPackageWithMsi.ps1
index f4171751f6..b0c497b985 100644
--- a/src/Installers/Windows/GenerateNugetPackageWithMsi.ps1
+++ b/src/Installers/Windows/GenerateNugetPackageWithMsi.ps1
@@ -11,7 +11,8 @@ param(
[Parameter(Mandatory=$true)][string]$PackageVersion,
[Parameter(Mandatory=$true)][string]$RepoRoot,
[Parameter(Mandatory=$true)][string]$MajorVersion,
- [Parameter(Mandatory=$true)][string]$MinorVersion
+ [Parameter(Mandatory=$true)][string]$MinorVersion,
+ [Parameter(Mandatory=$true)][string]$PackageIconPath
)
$NuGetDir = Join-Path $RepoRoot "artifacts\Tools\nuget\$Name\$Architecture"
@@ -24,8 +25,8 @@ if (-not (Test-Path $NuGetDir)) {
if (-not (Test-Path $NuGetExe)) {
# Using 3.5.0 to workaround https://github.com/NuGet/Home/issues/5016
Write-Output "Downloading nuget.exe to $NuGetExe"
- wget https://dist.nuget.org/win-x86-commandline/v3.5.0/nuget.exe -OutFile $NuGetExe
+ wget https://dist.nuget.org/win-x86-commandline/v5.3.0/nuget.exe -OutFile $NuGetExe
}
-& $NuGetExe pack $NuspecFile -Version $PackageVersion -OutputDirectory $OutputDirectory -NoDefaultExcludes -NoPackageAnalysis -Properties ASPNETCORE_RUNTIME_MSI=$MsiPath`;ASPNETCORE_CAB_FILE=$CabPath`;ARCH=$Architecture`;MAJOR=$MajorVersion`;MINOR=$MinorVersion`;
+& $NuGetExe pack $NuspecFile -Version $PackageVersion -OutputDirectory $OutputDirectory -NoDefaultExcludes -NoPackageAnalysis -Properties ASPNETCORE_RUNTIME_MSI=$MsiPath`;ASPNETCORE_CAB_FILE=$CabPath`;ARCH=$Architecture`;MAJOR=$MajorVersion`;MINOR=$MinorVersion`;PACKAGE_ICON_PATH=$PackageIconPath`;
Exit $LastExitCode
\ No newline at end of file
diff --git a/src/Installers/Windows/SharedFramework/SharedFramework.wixproj b/src/Installers/Windows/SharedFramework/SharedFramework.wixproj
index 8ec33b0450..d9362eab33 100644
--- a/src/Installers/Windows/SharedFramework/SharedFramework.wixproj
+++ b/src/Installers/Windows/SharedFramework/SharedFramework.wixproj
@@ -24,6 +24,10 @@
$(RepoRoot)\src\Installers\Windows\SharedFramework\SharedFrameworkPackage.nuspec
+
+
+
+
$(WixExtDir)\WixDependencyExtension.dll
@@ -101,6 +105,7 @@
'$(_GeneratedPackageVersion)' ^
'$(RepoRoot)' ^
'$(AspNetCoreMajorVersion)' ^
- '$(AspNetCoreMinorVersion)'" />
+ '$(AspNetCoreMinorVersion)' ^
+ '$(PackageIconFullPath)'" />
diff --git a/src/Installers/Windows/SharedFramework/SharedFrameworkPackage.nuspec b/src/Installers/Windows/SharedFramework/SharedFrameworkPackage.nuspec
index b5b8c43d9e..66e9055af4 100644
--- a/src/Installers/Windows/SharedFramework/SharedFrameworkPackage.nuspec
+++ b/src/Installers/Windows/SharedFramework/SharedFrameworkPackage.nuspec
@@ -8,6 +8,7 @@
Microsoft
https://www.microsoft.com/net/dotnet_library_license.htm
https://github.com/aspnet/aspnetcore
+ packageIcon.png
true
$MAJOR$.$MINOR$ ASP.NET Core TargetingPack ($ARCH$) Windows Installer MSI as a .nupkg for internal Visual Studio build consumption
© Microsoft Corporation. All rights reserved.
@@ -15,5 +16,6 @@
+
diff --git a/src/Installers/Windows/TargetingPack/TargetingPack.wixproj b/src/Installers/Windows/TargetingPack/TargetingPack.wixproj
index d8b2b051af..e7cbb1f2ce 100644
--- a/src/Installers/Windows/TargetingPack/TargetingPack.wixproj
+++ b/src/Installers/Windows/TargetingPack/TargetingPack.wixproj
@@ -9,6 +9,7 @@
$(Name)-$(Platform)
Package
true
+ true
0AC34F1B-8056-4FFB-A398-E6BB7D67B48D
true
5150;5151
@@ -22,6 +23,10 @@
$(RepoRoot)\src\Installers\Windows\TargetingPack\TargetingPackPackage.nuspec
+
+
+
+
$(WixExtDir)\WixDependencyExtension.dll
@@ -97,6 +102,7 @@
'$(_GeneratedPackageVersion)' ^
'$(RepoRoot)' ^
'$(AspNetCoreMajorVersion)' ^
- '$(AspNetCoreMinorVersion)'" />
+ '$(AspNetCoreMinorVersion)' ^
+ '$(PackageIconFullPath)'" />
diff --git a/src/Installers/Windows/TargetingPack/TargetingPackPackage.nuspec b/src/Installers/Windows/TargetingPack/TargetingPackPackage.nuspec
index d5ef9a2069..5c85b569ba 100644
--- a/src/Installers/Windows/TargetingPack/TargetingPackPackage.nuspec
+++ b/src/Installers/Windows/TargetingPack/TargetingPackPackage.nuspec
@@ -8,11 +8,13 @@
Microsoft
https://www.microsoft.com/net/dotnet_library_license.htm
https://github.com/aspnet/aspnetcore
+ packageIcon.png
true
$MAJOR$.$MINOR$ ASP.NET Core TargetingPack ($ARCH$) Windows Installer MSI as a .nupkg for internal Visual Studio build consumption
© Microsoft Corporation. All rights reserved.
+
diff --git a/src/Installers/Windows/Wix.targets b/src/Installers/Windows/Wix.targets
index f7323ee110..a6c7224a84 100644
--- a/src/Installers/Windows/Wix.targets
+++ b/src/Installers/Windows/Wix.targets
@@ -63,7 +63,7 @@
diff --git a/src/Mvc/Mvc.Analyzers/src/Microsoft.AspNetCore.Mvc.Analyzers.csproj b/src/Mvc/Mvc.Analyzers/src/Microsoft.AspNetCore.Mvc.Analyzers.csproj
index 2ece75d8d8..b098c7cad2 100644
--- a/src/Mvc/Mvc.Analyzers/src/Microsoft.AspNetCore.Mvc.Analyzers.csproj
+++ b/src/Mvc/Mvc.Analyzers/src/Microsoft.AspNetCore.Mvc.Analyzers.csproj
@@ -19,6 +19,7 @@
+
diff --git a/src/Mvc/Mvc.Analyzers/src/Microsoft.AspNetCore.Mvc.Analyzers.nuspec b/src/Mvc/Mvc.Analyzers/src/Microsoft.AspNetCore.Mvc.Analyzers.nuspec
index f906ece217..106615a7da 100644
--- a/src/Mvc/Mvc.Analyzers/src/Microsoft.AspNetCore.Mvc.Analyzers.nuspec
+++ b/src/Mvc/Mvc.Analyzers/src/Microsoft.AspNetCore.Mvc.Analyzers.nuspec
@@ -2,10 +2,12 @@
$CommonMetadataElements$
+ packageIcon.png
+
diff --git a/src/Mvc/Mvc.Api.Analyzers/src/Microsoft.AspNetCore.Mvc.Api.Analyzers.csproj b/src/Mvc/Mvc.Api.Analyzers/src/Microsoft.AspNetCore.Mvc.Api.Analyzers.csproj
index d3a6e138f1..0ae605cb69 100644
--- a/src/Mvc/Mvc.Api.Analyzers/src/Microsoft.AspNetCore.Mvc.Api.Analyzers.csproj
+++ b/src/Mvc/Mvc.Api.Analyzers/src/Microsoft.AspNetCore.Mvc.Api.Analyzers.csproj
@@ -24,6 +24,7 @@
+
diff --git a/src/Mvc/Mvc.Api.Analyzers/src/Microsoft.AspNetCore.Mvc.Api.Analyzers.nuspec b/src/Mvc/Mvc.Api.Analyzers/src/Microsoft.AspNetCore.Mvc.Api.Analyzers.nuspec
index f906ece217..106615a7da 100644
--- a/src/Mvc/Mvc.Api.Analyzers/src/Microsoft.AspNetCore.Mvc.Api.Analyzers.nuspec
+++ b/src/Mvc/Mvc.Api.Analyzers/src/Microsoft.AspNetCore.Mvc.Api.Analyzers.nuspec
@@ -2,10 +2,12 @@
$CommonMetadataElements$
+ packageIcon.png
+
diff --git a/src/Mvc/Mvc.ApiExplorer/ref/Microsoft.AspNetCore.Mvc.ApiExplorer.Manual.cs b/src/Mvc/Mvc.ApiExplorer/ref/Microsoft.AspNetCore.Mvc.ApiExplorer.Manual.cs
new file mode 100644
index 0000000000..55c1e57727
--- /dev/null
+++ b/src/Mvc/Mvc.ApiExplorer/ref/Microsoft.AspNetCore.Mvc.ApiExplorer.Manual.cs
@@ -0,0 +1,13 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System.Runtime.CompilerServices;
+
+[assembly: TypeForwardedTo(typeof(Microsoft.AspNetCore.Mvc.ApiExplorer.IApiDescriptionProvider))]
+[assembly: TypeForwardedTo(typeof(Microsoft.AspNetCore.Mvc.ApiExplorer.ApiDescription))]
+[assembly: TypeForwardedTo(typeof(Microsoft.AspNetCore.Mvc.ApiExplorer.ApiDescriptionProviderContext))]
+[assembly: TypeForwardedTo(typeof(Microsoft.AspNetCore.Mvc.ApiExplorer.ApiParameterDescription))]
+[assembly: TypeForwardedTo(typeof(Microsoft.AspNetCore.Mvc.ApiExplorer.ApiParameterRouteInfo))]
+[assembly: TypeForwardedTo(typeof(Microsoft.AspNetCore.Mvc.ApiExplorer.ApiRequestFormat))]
+[assembly: TypeForwardedTo(typeof(Microsoft.AspNetCore.Mvc.ApiExplorer.ApiResponseFormat))]
+[assembly: TypeForwardedTo(typeof(Microsoft.AspNetCore.Mvc.ApiExplorer.ApiResponseType))]
diff --git a/src/Mvc/Mvc.ApiExplorer/ref/Microsoft.AspNetCore.Mvc.ApiExplorer.csproj b/src/Mvc/Mvc.ApiExplorer/ref/Microsoft.AspNetCore.Mvc.ApiExplorer.csproj
index 7a6eb78c83..6866adbfab 100644
--- a/src/Mvc/Mvc.ApiExplorer/ref/Microsoft.AspNetCore.Mvc.ApiExplorer.csproj
+++ b/src/Mvc/Mvc.ApiExplorer/ref/Microsoft.AspNetCore.Mvc.ApiExplorer.csproj
@@ -5,6 +5,7 @@
+
diff --git a/src/Mvc/Mvc.Core/ref/Microsoft.AspNetCore.Mvc.Core.Manual.cs b/src/Mvc/Mvc.Core/ref/Microsoft.AspNetCore.Mvc.Core.Manual.cs
new file mode 100644
index 0000000000..d3e44fb471
--- /dev/null
+++ b/src/Mvc/Mvc.Core/ref/Microsoft.AspNetCore.Mvc.Core.Manual.cs
@@ -0,0 +1,7 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System.Runtime.CompilerServices;
+using Microsoft.AspNetCore.Mvc.Formatters;
+
+[assembly: TypeForwardedTo(typeof(InputFormatterException))]
diff --git a/src/Mvc/Mvc.Core/ref/Microsoft.AspNetCore.Mvc.Core.csproj b/src/Mvc/Mvc.Core/ref/Microsoft.AspNetCore.Mvc.Core.csproj
index ad6518033f..670de5a7d7 100644
--- a/src/Mvc/Mvc.Core/ref/Microsoft.AspNetCore.Mvc.Core.csproj
+++ b/src/Mvc/Mvc.Core/ref/Microsoft.AspNetCore.Mvc.Core.csproj
@@ -5,6 +5,7 @@
+
diff --git a/src/Mvc/Mvc.Formatters.Json/ref/Microsoft.AspNetCore.Mvc.Formatters.Json.Manual.cs b/src/Mvc/Mvc.Formatters.Json/ref/Microsoft.AspNetCore.Mvc.Formatters.Json.Manual.cs
new file mode 100644
index 0000000000..039f419cd4
--- /dev/null
+++ b/src/Mvc/Mvc.Formatters.Json/ref/Microsoft.AspNetCore.Mvc.Formatters.Json.Manual.cs
@@ -0,0 +1,7 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System.Runtime.CompilerServices;
+using Microsoft.AspNetCore.Mvc;
+
+[assembly: TypeForwardedTo(typeof(JsonResult))]
diff --git a/src/Mvc/Mvc.Formatters.Json/ref/Microsoft.AspNetCore.Mvc.Formatters.Json.csproj b/src/Mvc/Mvc.Formatters.Json/ref/Microsoft.AspNetCore.Mvc.Formatters.Json.csproj
index c95b78e21b..2faf4d47eb 100644
--- a/src/Mvc/Mvc.Formatters.Json/ref/Microsoft.AspNetCore.Mvc.Formatters.Json.csproj
+++ b/src/Mvc/Mvc.Formatters.Json/ref/Microsoft.AspNetCore.Mvc.Formatters.Json.csproj
@@ -5,6 +5,7 @@
+
diff --git a/src/ProjectTemplates/TemplateProjects.props b/src/ProjectTemplates/TemplateProjects.props
index 8cfab01c93..fd6dc06fe4 100644
--- a/src/ProjectTemplates/TemplateProjects.props
+++ b/src/ProjectTemplates/TemplateProjects.props
@@ -21,4 +21,8 @@
+
+
+
+
diff --git a/src/ProjectTemplates/templates.nuspec b/src/ProjectTemplates/templates.nuspec
index 8e85ee528c..49a1d320ec 100644
--- a/src/ProjectTemplates/templates.nuspec
+++ b/src/ProjectTemplates/templates.nuspec
@@ -5,11 +5,13 @@
+ packageIcon.png
+
diff --git a/src/ProjectTemplates/test/Infrastructure/GenerateTestProps.targets b/src/ProjectTemplates/test/Infrastructure/GenerateTestProps.targets
index 7a821cb2af..58b1170428 100644
--- a/src/ProjectTemplates/test/Infrastructure/GenerateTestProps.targets
+++ b/src/ProjectTemplates/test/Infrastructure/GenerateTestProps.targets
@@ -4,12 +4,20 @@
DependsOnTargets="PrepareForTest"
Condition="$(DesignTimeBuild) != true">
+
+ SkipNonexistentProjects="false"
+ Condition="'$(IsTargetingPackBuilding)' != 'false'">
+
+
+ @(TargetingPackVersionInfo.PackageVersion)
+ $(AspNetCoreBaselineVersion)
+
+
'%(PackageVersion)');
+ MicrosoftAspNetCoreAppRefPackageVersion=$(MicrosoftAspNetCoreAppRefPackageVersion);
MicrosoftAspNetCoreAppRuntimePackageVersion=@(_RuntimePackageVersionInfo->'%(PackageVersion)');
SupportedRuntimeIdentifiers=$(SupportedRuntimeIdentifiers);
DefaultNetCoreTargetFramework=$(DefaultNetCoreTargetFramework);
diff --git a/src/Razor/Razor.Runtime/ref/Microsoft.AspNetCore.Razor.Runtime.Manual.cs b/src/Razor/Razor.Runtime/ref/Microsoft.AspNetCore.Razor.Runtime.Manual.cs
new file mode 100644
index 0000000000..8549a23cd4
--- /dev/null
+++ b/src/Razor/Razor.Runtime/ref/Microsoft.AspNetCore.Razor.Runtime.Manual.cs
@@ -0,0 +1,23 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System.Runtime.CompilerServices;
+using Microsoft.AspNetCore.Razor.TagHelpers;
+
+[assembly: TypeForwardedTo(typeof(DefaultTagHelperContent))]
+[assembly: TypeForwardedTo(typeof(HtmlAttributeNameAttribute))]
+[assembly: TypeForwardedTo(typeof(HtmlAttributeNotBoundAttribute))]
+[assembly: TypeForwardedTo(typeof(HtmlTargetElementAttribute))]
+[assembly: TypeForwardedTo(typeof(ITagHelper))]
+[assembly: TypeForwardedTo(typeof(ITagHelperComponent))]
+[assembly: TypeForwardedTo(typeof(NullHtmlEncoder))]
+[assembly: TypeForwardedTo(typeof(OutputElementHintAttribute))]
+[assembly: TypeForwardedTo(typeof(ReadOnlyTagHelperAttributeList))]
+[assembly: TypeForwardedTo(typeof(RestrictChildrenAttribute))]
+[assembly: TypeForwardedTo(typeof(TagHelper))]
+[assembly: TypeForwardedTo(typeof(TagHelperAttribute))]
+[assembly: TypeForwardedTo(typeof(TagHelperAttributeList))]
+[assembly: TypeForwardedTo(typeof(TagHelperComponent))]
+[assembly: TypeForwardedTo(typeof(TagHelperContent))]
+[assembly: TypeForwardedTo(typeof(TagHelperContext))]
+[assembly: TypeForwardedTo(typeof(TagHelperOutput))]
\ No newline at end of file
diff --git a/src/Razor/Razor.Runtime/ref/Microsoft.AspNetCore.Razor.Runtime.csproj b/src/Razor/Razor.Runtime/ref/Microsoft.AspNetCore.Razor.Runtime.csproj
index d3402450a1..066e905b92 100644
--- a/src/Razor/Razor.Runtime/ref/Microsoft.AspNetCore.Razor.Runtime.csproj
+++ b/src/Razor/Razor.Runtime/ref/Microsoft.AspNetCore.Razor.Runtime.csproj
@@ -5,6 +5,7 @@
+
diff --git a/src/Security/Authentication/OpenIdConnect/samples/OpenIdConnectSample/OpenIdConnectSample.csproj b/src/Security/Authentication/OpenIdConnect/samples/OpenIdConnectSample/OpenIdConnectSample.csproj
index e416aedf54..46aea57e81 100644
--- a/src/Security/Authentication/OpenIdConnect/samples/OpenIdConnectSample/OpenIdConnectSample.csproj
+++ b/src/Security/Authentication/OpenIdConnect/samples/OpenIdConnectSample/OpenIdConnectSample.csproj
@@ -16,6 +16,7 @@
+
diff --git a/src/Security/Authentication/OpenIdConnect/samples/OpenIdConnectSample/Startup.cs b/src/Security/Authentication/OpenIdConnect/samples/OpenIdConnectSample/Startup.cs
index f26e23a8e5..6d01fae4e9 100644
--- a/src/Security/Authentication/OpenIdConnect/samples/OpenIdConnectSample/Startup.cs
+++ b/src/Security/Authentication/OpenIdConnect/samples/OpenIdConnectSample/Startup.cs
@@ -30,6 +30,7 @@ namespace OpenIdConnectSample
}
public IConfiguration Configuration { get; set; }
+
public IWebHostEnvironment Environment { get; }
private void CheckSameSite(HttpContext httpContext, CookieOptions options)
diff --git a/src/Security/Authentication/WsFederation/samples/WsFedSample/WsFedSample.csproj b/src/Security/Authentication/WsFederation/samples/WsFedSample/WsFedSample.csproj
index dbaba2adaf..ec061d3693 100644
--- a/src/Security/Authentication/WsFederation/samples/WsFedSample/WsFedSample.csproj
+++ b/src/Security/Authentication/WsFederation/samples/WsFedSample/WsFedSample.csproj
@@ -15,6 +15,7 @@
+
diff --git a/src/Security/Authentication/samples/SocialSample/SocialSample.csproj b/src/Security/Authentication/samples/SocialSample/SocialSample.csproj
index db27558599..21f6f1b17f 100644
--- a/src/Security/Authentication/samples/SocialSample/SocialSample.csproj
+++ b/src/Security/Authentication/samples/SocialSample/SocialSample.csproj
@@ -22,6 +22,8 @@
+
+
diff --git a/src/Security/Authentication/test/Microsoft.AspNetCore.Authentication.Test.csproj b/src/Security/Authentication/test/Microsoft.AspNetCore.Authentication.Test.csproj
index ad03f0bea6..815d30e027 100644
--- a/src/Security/Authentication/test/Microsoft.AspNetCore.Authentication.Test.csproj
+++ b/src/Security/Authentication/test/Microsoft.AspNetCore.Authentication.Test.csproj
@@ -49,6 +49,7 @@
+
diff --git a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.Manual.cs b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.Manual.cs
new file mode 100644
index 0000000000..84fc42f7ab
--- /dev/null
+++ b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.Manual.cs
@@ -0,0 +1,10 @@
+
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System.Runtime.CompilerServices;
+using Microsoft.AspNetCore.Authorization;
+
+// Microsoft.AspNetCore.Metadata
+[assembly: TypeForwardedTo(typeof(IAuthorizeData))]
+[assembly: TypeForwardedTo(typeof(IAllowAnonymous))]
diff --git a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.csproj b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.csproj
index ec07cafbaa..1c742a823a 100644
--- a/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.csproj
+++ b/src/Security/Authorization/Core/ref/Microsoft.AspNetCore.Authorization.csproj
@@ -5,12 +5,14 @@
+
+
diff --git a/src/Security/CookiePolicy/src/ResponseCookiesWrapper.cs b/src/Security/CookiePolicy/src/ResponseCookiesWrapper.cs
index 879df47018..2d03c65c3d 100644
--- a/src/Security/CookiePolicy/src/ResponseCookiesWrapper.cs
+++ b/src/Security/CookiePolicy/src/ResponseCookiesWrapper.cs
@@ -242,11 +242,13 @@ namespace Microsoft.AspNetCore.CookiePolicy
default:
throw new InvalidOperationException();
}
+
if (options.SameSite < Options.MinimumSameSitePolicy)
{
options.SameSite = Options.MinimumSameSitePolicy;
_logger.CookieSameSiteUpgraded(key, Options.MinimumSameSitePolicy.ToString());
}
+
switch (Options.HttpOnly)
{
case HttpOnlyPolicy.Always:
diff --git a/src/Security/CookiePolicy/test/CookiePolicyTests.cs b/src/Security/CookiePolicy/test/CookiePolicyTests.cs
index 395d328f1d..783c29e4e0 100644
--- a/src/Security/CookiePolicy/test/CookiePolicyTests.cs
+++ b/src/Security/CookiePolicy/test/CookiePolicyTests.cs
@@ -43,6 +43,7 @@ namespace Microsoft.AspNetCore.CookiePolicy.Test
context.Response.Cookies.Append("C", "C", new CookieOptions { SameSite = Http.SameSiteMode.None });
context.Response.Cookies.Append("D", "D", new CookieOptions { SameSite = Http.SameSiteMode.Lax });
context.Response.Cookies.Append("E", "E", new CookieOptions { SameSite = Http.SameSiteMode.Strict });
+ context.Response.Cookies.Append("F", "F", new CookieOptions { SameSite = (Http.SameSiteMode)(-1) });
return Task.FromResult(0);
};
@@ -236,6 +237,7 @@ namespace Microsoft.AspNetCore.CookiePolicy.Test
Assert.Equal("C=C; path=/; samesite=none", transaction.SetCookie[2]);
Assert.Equal("D=D; path=/; samesite=lax", transaction.SetCookie[3]);
Assert.Equal("E=E; path=/; samesite=strict", transaction.SetCookie[4]);
+ Assert.Equal("F=F; path=/", transaction.SetCookie[5]);
}));
}
diff --git a/src/Security/CookiePolicy/test/Microsoft.AspNetCore.CookiePolicy.Test.csproj b/src/Security/CookiePolicy/test/Microsoft.AspNetCore.CookiePolicy.Test.csproj
index efeb4acb3b..7f09e2758d 100644
--- a/src/Security/CookiePolicy/test/Microsoft.AspNetCore.CookiePolicy.Test.csproj
+++ b/src/Security/CookiePolicy/test/Microsoft.AspNetCore.CookiePolicy.Test.csproj
@@ -13,6 +13,7 @@
+
diff --git a/src/Security/Security.sln b/src/Security/Security.sln
index 32566c7143..93250dc8a4 100644
--- a/src/Security/Security.sln
+++ b/src/Security/Security.sln
@@ -164,6 +164,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.HttpSys", "..\Servers\HttpSys\src\Microsoft.AspNetCore.Server.HttpSys.csproj", "{D6C3C4A9-197B-47B5-8B72-35047CBC4F22}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Net.Http.Headers", "..\Http\Headers\src\Microsoft.Net.Http.Headers.csproj", "{4BB8D7D7-E111-4A86-B6E5-C1201E0DA8CE}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
diff --git a/src/Servers/IIS/IIS/ref/Microsoft.AspNetCore.Server.IIS.Manual.cs b/src/Servers/IIS/IIS/ref/Microsoft.AspNetCore.Server.IIS.Manual.cs
new file mode 100644
index 0000000000..ab9860b033
--- /dev/null
+++ b/src/Servers/IIS/IIS/ref/Microsoft.AspNetCore.Server.IIS.Manual.cs
@@ -0,0 +1,8 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System.Runtime.CompilerServices;
+using Microsoft.AspNetCore.Http.Features;
+
+[assembly: TypeForwardedTo(typeof(IServerVariablesFeature))]
+
diff --git a/src/Servers/IIS/IIS/ref/Microsoft.AspNetCore.Server.IIS.csproj b/src/Servers/IIS/IIS/ref/Microsoft.AspNetCore.Server.IIS.csproj
index 2cfe2e86a7..a88930de54 100644
--- a/src/Servers/IIS/IIS/ref/Microsoft.AspNetCore.Server.IIS.csproj
+++ b/src/Servers/IIS/IIS/ref/Microsoft.AspNetCore.Server.IIS.csproj
@@ -5,6 +5,7 @@
+
diff --git a/src/SignalR/clients/ts/signalr/src/WebSocketTransport.ts b/src/SignalR/clients/ts/signalr/src/WebSocketTransport.ts
index b7e842e3ec..418c306055 100644
--- a/src/SignalR/clients/ts/signalr/src/WebSocketTransport.ts
+++ b/src/SignalR/clients/ts/signalr/src/WebSocketTransport.ts
@@ -49,6 +49,7 @@ export class WebSocketTransport implements ITransport {
url = url.replace(/^http/, "ws");
let webSocket: WebSocket | undefined;
const cookies = this.httpClient.getCookieString(url);
+ let opened = false;
if (Platform.isNode && cookies) {
// Only pass cookies when in non-browser environments
@@ -72,6 +73,7 @@ export class WebSocketTransport implements ITransport {
webSocket.onopen = (_event: Event) => {
this.logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);
this.webSocket = webSocket;
+ opened = true;
resolve();
};
@@ -94,7 +96,23 @@ export class WebSocketTransport implements ITransport {
}
};
- webSocket.onclose = (event: CloseEvent) => this.close(event);
+ webSocket.onclose = (event: CloseEvent) => {
+ // Don't call close handler if connection was never established
+ // We'll reject the connect call instead
+ if (opened) {
+ this.close(event);
+ } else {
+ let error: any = null;
+ // ErrorEvent is a browser only type we need to check if the type exists before using it
+ if (typeof ErrorEvent !== "undefined" && event instanceof ErrorEvent) {
+ error = event.error;
+ } else {
+ error = new Error("There was an error with the transport.");
+ }
+
+ reject(error);
+ }
+ };
});
}
diff --git a/src/SignalR/clients/ts/signalr/tests/ServerSentEventsTransport.test.ts b/src/SignalR/clients/ts/signalr/tests/ServerSentEventsTransport.test.ts
index 0f017adace..bad6a9fb3a 100644
--- a/src/SignalR/clients/ts/signalr/tests/ServerSentEventsTransport.test.ts
+++ b/src/SignalR/clients/ts/signalr/tests/ServerSentEventsTransport.test.ts
@@ -45,6 +45,27 @@ describe("ServerSentEventsTransport", () => {
});
});
+ it("connect failure does not call onclose handler", async () => {
+ await VerifyLogger.run(async (logger) => {
+ const sse = new ServerSentEventsTransport(new TestHttpClient(), undefined, logger, true, TestEventSource);
+ let closeCalled = false;
+ sse.onclose = () => closeCalled = true;
+
+ const connectPromise = (async () => {
+ await sse.connect("http://example.com", TransferFormat.Text);
+ })();
+
+ await TestEventSource.eventSource.openSet;
+
+ TestEventSource.eventSource.onerror(new TestMessageEvent());
+
+ await expect(connectPromise)
+ .rejects
+ .toEqual(new Error("Error occurred"));
+ expect(closeCalled).toBe(false);
+ });
+ });
+
[["http://example.com", "http://example.com?access_token=secretToken"],
["http://example.com?value=null", "http://example.com?value=null&access_token=secretToken"]]
.forEach(([input, expected]) => {
diff --git a/src/SignalR/clients/ts/signalr/tests/WebSocketTransport.test.ts b/src/SignalR/clients/ts/signalr/tests/WebSocketTransport.test.ts
index 28277df11a..e26eaa86a3 100644
--- a/src/SignalR/clients/ts/signalr/tests/WebSocketTransport.test.ts
+++ b/src/SignalR/clients/ts/signalr/tests/WebSocketTransport.test.ts
@@ -66,6 +66,33 @@ describe("WebSocketTransport", () => {
});
});
+ it("connect failure does not call onclose handler", async () => {
+ await VerifyLogger.run(async (logger) => {
+ (global as any).ErrorEvent = TestErrorEvent;
+ const webSocket = new WebSocketTransport(new TestHttpClient(), undefined, logger, true, TestWebSocket);
+ let closeCalled = false;
+ webSocket.onclose = () => closeCalled = true;
+
+ let connectComplete: boolean = false;
+ const connectPromise = (async () => {
+ await webSocket.connect("http://example.com", TransferFormat.Text);
+ connectComplete = true;
+ })();
+
+ await TestWebSocket.webSocket.closeSet;
+
+ expect(connectComplete).toBe(false);
+
+ TestWebSocket.webSocket.onclose(new TestEvent());
+
+ await expect(connectPromise)
+ .rejects
+ .toThrow("There was an error with the transport.");
+ expect(connectComplete).toBe(false);
+ expect(closeCalled).toBe(false);
+ });
+ });
+
[["http://example.com", "ws://example.com?access_token=secretToken"],
["http://example.com?value=null", "ws://example.com?value=null&access_token=secretToken"],
["https://example.com?value=null", "wss://example.com?value=null&access_token=secretToken"]]
diff --git a/src/Tools/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.csproj b/src/Tools/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.csproj
index c50a0115fa..cef31805db 100644
--- a/src/Tools/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.csproj
+++ b/src/Tools/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.csproj
@@ -21,5 +21,6 @@
+
diff --git a/src/Tools/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.nuspec b/src/Tools/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.nuspec
index 23d654d168..ce25cc5f93 100644
--- a/src/Tools/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.nuspec
+++ b/src/Tools/Extensions.ApiDescription.Client/src/Microsoft.Extensions.ApiDescription.Client.nuspec
@@ -2,11 +2,13 @@
$CommonMetadataElements$
+ packageIcon.png
+
diff --git a/src/Tools/Extensions.ApiDescription.Server/src/Microsoft.Extensions.ApiDescription.Server.csproj b/src/Tools/Extensions.ApiDescription.Server/src/Microsoft.Extensions.ApiDescription.Server.csproj
index e0d39cff01..c4c5f3aa7f 100644
--- a/src/Tools/Extensions.ApiDescription.Server/src/Microsoft.Extensions.ApiDescription.Server.csproj
+++ b/src/Tools/Extensions.ApiDescription.Server/src/Microsoft.Extensions.ApiDescription.Server.csproj
@@ -30,6 +30,7 @@
+
diff --git a/src/Tools/Extensions.ApiDescription.Server/src/Microsoft.Extensions.ApiDescription.Server.nuspec b/src/Tools/Extensions.ApiDescription.Server/src/Microsoft.Extensions.ApiDescription.Server.nuspec
index 2ffc3b4f87..2839a1d0b2 100644
--- a/src/Tools/Extensions.ApiDescription.Server/src/Microsoft.Extensions.ApiDescription.Server.nuspec
+++ b/src/Tools/Extensions.ApiDescription.Server/src/Microsoft.Extensions.ApiDescription.Server.nuspec
@@ -2,6 +2,7 @@
$CommonMetadataElements$
+ packageIcon.png
@@ -11,5 +12,6 @@
+