From b2a84b7b5fc8ca18d4cabc6f58c0e0d2249d76cc Mon Sep 17 00:00:00 2001 From: Pranav K Date: Wed, 20 Feb 2019 15:21:45 -0800 Subject: [PATCH 1/6] Regenerate baselines for precompilation test (#7766) * Regenerate baselines for precompilation test Fixes https://github.com/aspnet/AspNetCore-Internal/issues/1822 --- .../FunctionalTests/Infrastructure/TestEmbeddedResource.cs | 5 ++--- .../FunctionalTests/Resources/SimpleAppTest.Home.Index.txt | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Mvc/ViewCompilation/test/FunctionalTests/Infrastructure/TestEmbeddedResource.cs b/src/Mvc/ViewCompilation/test/FunctionalTests/Infrastructure/TestEmbeddedResource.cs index c98cd4c348..1872da2d39 100644 --- a/src/Mvc/ViewCompilation/test/FunctionalTests/Infrastructure/TestEmbeddedResource.cs +++ b/src/Mvc/ViewCompilation/test/FunctionalTests/Infrastructure/TestEmbeddedResource.cs @@ -23,8 +23,7 @@ namespace FunctionalTests if (!string.Equals(expected, normalizedContent, System.StringComparison.Ordinal)) { var solutionRoot = ApplicationPaths.SolutionDirectory; - var projectName = typeof(TestEmbeddedResource).GetTypeInfo().Assembly.GetName().Name; - var fullPath = Path.Combine(solutionRoot, "test", ProjectName, "Resources", resourceFile); + var fullPath = Path.Combine(solutionRoot, "ViewCompilation", "test", "FunctionalTests", "Resources", resourceFile); lock (_writeLock) { // Write content to the file, creating it if necessary. @@ -55,4 +54,4 @@ namespace FunctionalTests } } } -} \ No newline at end of file +} diff --git a/src/Mvc/ViewCompilation/test/FunctionalTests/Resources/SimpleAppTest.Home.Index.txt b/src/Mvc/ViewCompilation/test/FunctionalTests/Resources/SimpleAppTest.Home.Index.txt index fe83fc7f9d..b826e19386 100644 --- a/src/Mvc/ViewCompilation/test/FunctionalTests/Resources/SimpleAppTest.Home.Index.txt +++ b/src/Mvc/ViewCompilation/test/FunctionalTests/Resources/SimpleAppTest.Home.Index.txt @@ -157,9 +157,9 @@ SimpleApp.PrecompiledViews, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nul + - - + SimpleApp.PrecompiledViews, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null From ae0c3dc42a173f555d6a3a2b94b2430378c36f23 Mon Sep 17 00:00:00 2001 From: Ryan Brandenburg Date: Thu, 21 Feb 2019 15:19:02 -0800 Subject: [PATCH 2/6] Fix SHA calculations (#7804) Fix SHA calculations --- .../test/Templates.Test/CdnScriptTagTests.cs | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/src/Templating/test/Templates.Test/CdnScriptTagTests.cs b/src/Templating/test/Templates.Test/CdnScriptTagTests.cs index 4a4ebc15f0..564d42c1ad 100644 --- a/src/Templating/test/Templates.Test/CdnScriptTagTests.cs +++ b/src/Templating/test/Templates.Test/CdnScriptTagTests.cs @@ -77,13 +77,7 @@ namespace Templates.Test [MemberData(nameof(SubresourceIntegrityCheckScriptData))] public async Task CheckScriptSubresourceIntegrity(ScriptTag scriptTag) { - string expectedIntegrity; - using (var responseStream = await _httpClient.GetStreamAsync(scriptTag.Src)) - using (var alg = SHA256.Create()) - { - var hash = alg.ComputeHash(responseStream); - expectedIntegrity = "sha256-" + Convert.ToBase64String(hash); - } + var expectedIntegrity = await GetShaIntegrity(scriptTag); if (!expectedIntegrity.Equals(scriptTag.Integrity, StringComparison.OrdinalIgnoreCase)) { @@ -95,13 +89,7 @@ namespace Templates.Test [MemberData(nameof(SubresourceIntegrityCheckLinkData))] public async Task CheckLinkSubresourceIntegrity(LinkTag linkTag) { - string expectedIntegrity; - using (var responseStream = await _httpClient.GetStreamAsync(linkTag.HRef)) - using (var alg = SHA256.Create()) - { - var hash = alg.ComputeHash(responseStream); - expectedIntegrity = "sha256-" + Convert.ToBase64String(hash); - } + var expectedIntegrity = await GetShaIntegrity(linkTag); if (!expectedIntegrity.Equals(linkTag.Integrity, StringComparison.OrdinalIgnoreCase)) { @@ -162,6 +150,27 @@ namespace Templates.Test } } + private Task GetShaIntegrity(ScriptTag scriptTag) + { + return GetShaIntegrity(scriptTag.Integrity, scriptTag.Src); + } + + private Task GetShaIntegrity(LinkTag linkTag) + { + return GetShaIntegrity(linkTag.Integrity, linkTag.HRef); + } + + private async Task GetShaIntegrity(string integrity, string src) + { + var prefix = integrity.Substring(0, 6); + using (var respStream = await _httpClient.GetStreamAsync(src)) + using (HashAlgorithm alg = string.Equals(prefix, "sha256") ? (HashAlgorithm)SHA256.Create() : (HashAlgorithm)SHA384.Create()) + { + var hash = alg.ComputeHash(respStream); + return $"{prefix}-" + Convert.ToBase64String(hash); + } + } + private static string GetFileContentFromArchive(ScriptTag scriptTag, string relativeFilePath) { var file = Path.Combine(_artifactsDir, scriptTag.FileName); From 4ed02ebc5c45e864d2e457ebde54a5c5152766f3 Mon Sep 17 00:00:00 2001 From: Doug Bunting Date: Fri, 22 Feb 2019 10:34:19 -0800 Subject: [PATCH 3/6] Restore Microsoft.VisualStudio.Web.CodeGeneration.Design references in templates - revert part of "Remove aspnet/Scaffolding submodule (#7166)" - that was commit bb8c6fcd465f705490b05f9e33188058f4846341 --- build/dependencies.props | 1 + .../RazorPagesWeb-CSharp.csproj.in | 2 ++ .../StarterWeb-CSharp.csproj.in | 2 ++ 3 files changed, 5 insertions(+) diff --git a/build/dependencies.props b/build/dependencies.props index 03f4300c27..c1523aec71 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -76,6 +76,7 @@ 2.1.1 + 2.1.7 2.1.7 2.1.7 diff --git a/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in b/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in index 5d59f72449..dc190443c5 100644 --- a/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in +++ b/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in @@ -22,6 +22,7 @@ + @@ -39,6 +40,7 @@ + diff --git a/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in b/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in index a1775aafbb..a053ae2edc 100644 --- a/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in +++ b/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in @@ -22,6 +22,7 @@ + @@ -39,6 +40,7 @@ + From 2764ac66b00c93ead3d3fc3422f87f42a17ff79a Mon Sep 17 00:00:00 2001 From: Doug Bunting Date: Fri, 22 Feb 2019 11:00:26 -0800 Subject: [PATCH 4/6] Undo "Restore Microsoft.VisualStudio.Web.CodeGeneration.Design references in templates" - not intended for `release/2.1` without a PR! This reverts commit 4ed02ebc5c45e864d2e457ebde54a5c5152766f3 --- build/dependencies.props | 1 - .../RazorPagesWeb-CSharp.csproj.in | 2 -- .../StarterWeb-CSharp.csproj.in | 2 -- 3 files changed, 5 deletions(-) diff --git a/build/dependencies.props b/build/dependencies.props index c1523aec71..03f4300c27 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -76,7 +76,6 @@ 2.1.1 - 2.1.7 2.1.7 2.1.7 diff --git a/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in b/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in index dc190443c5..5d59f72449 100644 --- a/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in +++ b/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/RazorPagesWeb-CSharp.csproj.in @@ -22,7 +22,6 @@ - @@ -40,7 +39,6 @@ - diff --git a/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in b/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in index a053ae2edc..a1775aafbb 100644 --- a/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in +++ b/src/Templating/src/Microsoft.DotNet.Web.ProjectTemplates/StarterWeb-CSharp.csproj.in @@ -22,7 +22,6 @@ - @@ -40,7 +39,6 @@ - From 563a488f3b38395d0a2c8db8e5e40e99d190825a Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Tue, 5 Mar 2019 15:50:25 -0800 Subject: [PATCH 5/6] Add baseline test (#7988) - mostly matching what's in `release/2.2` --- .../Framework.UnitTests/ConsoleReporter.cs | 71 +++++++++++++++++++ .../Framework.UnitTests.csproj | 9 +++ .../Framework.UnitTests/RetryHelper.cs | 65 +++++++++++++++++ .../Framework.UnitTests/SharedFxTests.cs | 66 +++++++++++++++++ src/Framework/Framework.UnitTests/TestData.cs | 2 + 5 files changed, 213 insertions(+) create mode 100644 src/Framework/Framework.UnitTests/ConsoleReporter.cs create mode 100644 src/Framework/Framework.UnitTests/RetryHelper.cs diff --git a/src/Framework/Framework.UnitTests/ConsoleReporter.cs b/src/Framework/Framework.UnitTests/ConsoleReporter.cs new file mode 100644 index 0000000000..190e805dc2 --- /dev/null +++ b/src/Framework/Framework.UnitTests/ConsoleReporter.cs @@ -0,0 +1,71 @@ +// 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; +using System.IO; +using McMaster.Extensions.CommandLineUtils; + +namespace Microsoft.Extensions.Tools.Internal +{ + public class ConsoleReporter : IReporter + { + private object _writeLock = new object(); + + public ConsoleReporter(IConsole console) + : this(console, verbose: false, quiet: false) + { } + + public ConsoleReporter(IConsole console, bool verbose, bool quiet) + { + Console = console; + IsVerbose = verbose; + IsQuiet = quiet; + } + + protected IConsole Console { get; } + public bool IsVerbose { get; } + public bool IsQuiet { get; } + + protected virtual void WriteLine(TextWriter writer, string message, ConsoleColor? color) + { + lock (_writeLock) + { + if (color.HasValue) + { + Console.ForegroundColor = color.Value; + } + + writer.WriteLine(message); + + if (color.HasValue) + { + Console.ResetColor(); + } + } + } + + public virtual void Error(string message) + => WriteLine(Console.Error, message, ConsoleColor.Red); + public virtual void Warn(string message) + => WriteLine(Console.Out, message, ConsoleColor.Yellow); + + public virtual void Output(string message) + { + if (IsQuiet) + { + return; + } + WriteLine(Console.Out, message, color: null); + } + + public virtual void Verbose(string message) + { + if (!IsVerbose) + { + return; + } + + WriteLine(Console.Out, message, ConsoleColor.DarkGray); + } + } +} diff --git a/src/Framework/Framework.UnitTests/Framework.UnitTests.csproj b/src/Framework/Framework.UnitTests/Framework.UnitTests.csproj index f1eb186b64..c69b8ddbd1 100644 --- a/src/Framework/Framework.UnitTests/Framework.UnitTests.csproj +++ b/src/Framework/Framework.UnitTests/Framework.UnitTests.csproj @@ -23,10 +23,15 @@ <_Parameter1>MicrosoftNETCoreAppPackageVersion <_Parameter2>$(RuntimeFrameworkVersion) + + <_Parameter1>PreviousAspNetCoreReleaseVersion + <_Parameter2>$(PreviousAspNetCoreReleaseVersion) + + @@ -42,6 +47,10 @@ <_Parameter1>SharedFxMetadataOutput:%(_ResolvedFrameworkReference.SharedFxName) <_Parameter2>%(_ResolvedFrameworkReference.MetadataOutputPath) + + <_Parameter1>RuntimeAssetsOutputPath:%(_ResolvedFrameworkReference.SharedFxName) + <_Parameter2>%(_ResolvedFrameworkReference.RuntimeAssetsOutputPath) + diff --git a/src/Framework/Framework.UnitTests/RetryHelper.cs b/src/Framework/Framework.UnitTests/RetryHelper.cs new file mode 100644 index 0000000000..2d92113e36 --- /dev/null +++ b/src/Framework/Framework.UnitTests/RetryHelper.cs @@ -0,0 +1,65 @@ +// 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; +using System.Threading.Tasks; +using McMaster.Extensions.CommandLineUtils; + +namespace TriageBuildFailures +{ + internal static class RetryHelpers + { + /// + /// Constrain the exponential back-off to this many minutes. + /// + private const int MaxRetryMinutes = 15; + + private static int TotalRetriesUsed; + + public static int GetTotalRetriesUsed() + { + return TotalRetriesUsed; + } + + public static async Task RetryAsync(Func action, IReporter reporter) + { + await RetryAsync( + async () => + { + await action(); + return null; + }, + reporter); + } + + public static async Task RetryAsync(Func> action, IReporter reporter) + { + Exception firstException = null; + + var retriesRemaining = 10; + var retryDelayInMinutes = 1; + + while (retriesRemaining > 0) + { + try + { + return await action(); + } + catch (Exception e) + { + firstException = firstException ?? e; + reporter.Output($"Exception thrown! {e.Message}"); + reporter.Output($"Waiting {retryDelayInMinutes} minute(s) to retry ({retriesRemaining} left)..."); + await Task.Delay(retryDelayInMinutes * 60 * 1000); + + // Do exponential back-off, but limit it (1, 2, 4, 8, 15, 15, 15, ...) + // With MaxRetryMinutes=15 and MaxRetries=10, this will delay a maximum of 105 minutes + retryDelayInMinutes = Math.Min(2 * retryDelayInMinutes, MaxRetryMinutes); + retriesRemaining--; + TotalRetriesUsed++; + } + } + throw new InvalidOperationException("Max exception retries reached, giving up.", firstException); + } + } +} diff --git a/src/Framework/Framework.UnitTests/SharedFxTests.cs b/src/Framework/Framework.UnitTests/SharedFxTests.cs index 28deb9a2ad..a541302b83 100644 --- a/src/Framework/Framework.UnitTests/SharedFxTests.cs +++ b/src/Framework/Framework.UnitTests/SharedFxTests.cs @@ -1,14 +1,80 @@ // 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; +using System.Collections.Generic; using System.IO; +using System.IO.Compression; +using System.Net; +using System.Reflection; +using System.Threading.Tasks; +using McMaster.Extensions.CommandLineUtils; using Newtonsoft.Json.Linq; +using TriageBuildFailures; using Xunit; namespace Microsoft.AspNetCore { public class SharedFxTests { + [Theory] + [MemberData(nameof(GetSharedFxConfig))] + public async Task BaselineTest(SharedFxConfig config) + { + var previousVersion = TestData.GetPreviousAspNetCoreReleaseVersion(); + var url = new Uri($"https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/" + previousVersion + "/aspnetcore-runtime-internal-" + previousVersion + "-win-x64.zip"); + var zipName = "assemblies.zip"; + var nugetAssemblyVersions = new Dictionary(); + var dir = TestData.GetTestDataValue($"RuntimeAssetsOutputPath:{config.Name}"); + + using (var testClient = new WebClient()) + { + var reporter = new ConsoleReporter(PhysicalConsole.Singleton); + await RetryHelpers.RetryAsync(async () => await testClient.DownloadFileTaskAsync(url, zipName), reporter); + } + + var zipPath = Path.Combine(AppContext.BaseDirectory, zipName); + var tempDirectoryPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); + try + { + Directory.CreateDirectory(tempDirectoryPath); + ZipFile.ExtractToDirectory(zipPath, tempDirectoryPath); + var nugetAssembliesPath = Path.Combine(tempDirectoryPath, "shared", config.Name, previousVersion); + + + var files = Directory.GetFiles(nugetAssembliesPath, "*.dll"); + foreach (var file in files) + { + try + { + var assemblyVersion = AssemblyName.GetAssemblyName(file).Version; + var dllName = Path.GetFileName(file); + nugetAssemblyVersions.Add(dllName, assemblyVersion); + } + catch (BadImageFormatException) { } + } + + files = Directory.GetFiles(dir, "*.dll"); + + Assert.All(files, file => + { + try + { + var localAssemblyVersion = AssemblyName.GetAssemblyName(file).Version; + var dllName = Path.GetFileName(file); + Assert.Contains(dllName, nugetAssemblyVersions.Keys); + Assert.InRange(localAssemblyVersion.CompareTo(nugetAssemblyVersions[dllName]), 0, int.MaxValue); + } + catch (BadImageFormatException) { } + + }); + } + finally + { + Directory.Delete(tempDirectoryPath, true); + } + } + [Theory] [MemberData(nameof(GetSharedFxConfig))] public void ItContainsValidRuntimeConfigFile(SharedFxConfig config) diff --git a/src/Framework/Framework.UnitTests/TestData.cs b/src/Framework/Framework.UnitTests/TestData.cs index a33613aff8..0814904168 100644 --- a/src/Framework/Framework.UnitTests/TestData.cs +++ b/src/Framework/Framework.UnitTests/TestData.cs @@ -10,6 +10,8 @@ namespace Microsoft.AspNetCore { public static string GetPackageVersion() => GetTestDataValue("PackageVersion"); + public static string GetPreviousAspNetCoreReleaseVersion() => GetTestDataValue("PreviousAspNetCoreReleaseVersion"); + public static string GetMicrosoftNETCoreAppPackageVersion() => GetTestDataValue("MicrosoftNETCoreAppPackageVersion"); public static string GetRepositoryCommit() => GetTestDataValue("RepositoryCommit"); From 4cbc33da7414b4b8333e2d18bd8419f582c30daf Mon Sep 17 00:00:00 2001 From: Doug Bunting Date: Wed, 6 Mar 2019 19:47:36 -0800 Subject: [PATCH 6/6] Update branding to 2.2.4 --- build/dependencies.props | 4 ++-- eng/Baseline.Designer.props | 2 +- eng/Baseline.xml | 2 +- eng/PatchConfig.props | 4 ++++ .../ArchiveBaseline.2.2.3.txt | 19 +++++++++++++++++++ .../ArchiveBaseline.2.2.3.txt | 19 +++++++++++++++++++ version.props | 2 +- 7 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 src/PackageArchive/Archive.CiServer.Patch.Compat/ArchiveBaseline.2.2.3.txt create mode 100644 src/PackageArchive/Archive.CiServer.Patch/ArchiveBaseline.2.2.3.txt diff --git a/build/dependencies.props b/build/dependencies.props index b2e17ce93e..8240460081 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -2,8 +2,8 @@ - 2.2.2 - 2.2.2 + 2.2.3 + 2.2.3 diff --git a/eng/Baseline.Designer.props b/eng/Baseline.Designer.props index 0bca2a489a..87784eccc8 100644 --- a/eng/Baseline.Designer.props +++ b/eng/Baseline.Designer.props @@ -2,7 +2,7 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - 2.2.2 + 2.2.3 diff --git a/eng/Baseline.xml b/eng/Baseline.xml index f6e6959091..094b040f20 100644 --- a/eng/Baseline.xml +++ b/eng/Baseline.xml @@ -4,7 +4,7 @@ This file contains a list of all the packages and their versions which were rele build of ASP.NET Core 2.2.x. Update this list when preparing for a new patch. --> - + diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props index 5951ed8785..fcc05ede1d 100644 --- a/eng/PatchConfig.props +++ b/eng/PatchConfig.props @@ -43,4 +43,8 @@ Later on, this will be checked using this condition: + + + + diff --git a/src/PackageArchive/Archive.CiServer.Patch.Compat/ArchiveBaseline.2.2.3.txt b/src/PackageArchive/Archive.CiServer.Patch.Compat/ArchiveBaseline.2.2.3.txt new file mode 100644 index 0000000000..85004251cf --- /dev/null +++ b/src/PackageArchive/Archive.CiServer.Patch.Compat/ArchiveBaseline.2.2.3.txt @@ -0,0 +1,19 @@ +microsoft.netcore.targets\1.0.1\.signature.p7s +microsoft.netcore.targets\1.1.0\.signature.p7s +runtime.native.system.io.compression\4.3.0\.signature.p7s +runtime.native.system.net.http\4.3.0\.signature.p7s +runtime.native.system.security.cryptography\4.0.0\.signature.p7s +runtime.native.system\4.3.0\.signature.p7s +system.private.datacontractserialization\4.1.1\.signature.p7s +system.reflection.emit.lightweight\4.3.0\.signature.p7s +system.reflection.emit\4.3.0\.signature.p7s +system.reflection.typeextensions\4.1.0\.signature.p7s +system.runtime.serialization.primitives\4.3.0\.signature.p7s +system.security.cryptography.csp\4.3.0\.signature.p7s +system.security.cryptography.openssl\4.3.0\.signature.p7s +system.security.principal\4.3.0\.signature.p7s +system.text.encoding.codepages\4.3.0\.signature.p7s +system.threading.tasks.extensions\4.3.0\.signature.p7s +system.threading.thread\4.3.0\.signature.p7s +system.threading.threadpool\4.3.0\.signature.p7s +system.xml.xmlserializer\4.0.11\.signature.p7s diff --git a/src/PackageArchive/Archive.CiServer.Patch/ArchiveBaseline.2.2.3.txt b/src/PackageArchive/Archive.CiServer.Patch/ArchiveBaseline.2.2.3.txt new file mode 100644 index 0000000000..85004251cf --- /dev/null +++ b/src/PackageArchive/Archive.CiServer.Patch/ArchiveBaseline.2.2.3.txt @@ -0,0 +1,19 @@ +microsoft.netcore.targets\1.0.1\.signature.p7s +microsoft.netcore.targets\1.1.0\.signature.p7s +runtime.native.system.io.compression\4.3.0\.signature.p7s +runtime.native.system.net.http\4.3.0\.signature.p7s +runtime.native.system.security.cryptography\4.0.0\.signature.p7s +runtime.native.system\4.3.0\.signature.p7s +system.private.datacontractserialization\4.1.1\.signature.p7s +system.reflection.emit.lightweight\4.3.0\.signature.p7s +system.reflection.emit\4.3.0\.signature.p7s +system.reflection.typeextensions\4.1.0\.signature.p7s +system.runtime.serialization.primitives\4.3.0\.signature.p7s +system.security.cryptography.csp\4.3.0\.signature.p7s +system.security.cryptography.openssl\4.3.0\.signature.p7s +system.security.principal\4.3.0\.signature.p7s +system.text.encoding.codepages\4.3.0\.signature.p7s +system.threading.tasks.extensions\4.3.0\.signature.p7s +system.threading.thread\4.3.0\.signature.p7s +system.threading.threadpool\4.3.0\.signature.p7s +system.xml.xmlserializer\4.0.11\.signature.p7s diff --git a/version.props b/version.props index 6a5491db68..cb564446e4 100644 --- a/version.props +++ b/version.props @@ -2,7 +2,7 @@ 2 2 - 3 + 4 servicing $([System.DateTime]::Now.ToString('yyMMdd'))-99