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 @@ +