From ee1dce81b3d2f3aa12e5cddb7ed3f38cedce95f9 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Thu, 8 Feb 2024 12:44:17 -0800 Subject: [PATCH 01/41] Add PackageDiff tool and tasks --- .../PackageDiff.Tasks.csproj | 31 ++++ .../PackageDiff.Tasks/PackageDiff.cs | 28 +++ .../build/PackageDiff.Tasks.props | 9 + .../PackageDiff/PackageDiff.csproj | 11 ++ .../tasks/PackageDiff/PackageDiff/Program.cs | 160 ++++++++++++++++++ .../PackageDiff/PackageDiff/ZipExtensions.cs | 60 +++++++ 6 files changed, 299 insertions(+) create mode 100644 src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.Tasks.csproj create mode 100644 src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.cs create mode 100644 src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/build/PackageDiff.Tasks.props create mode 100644 src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/PackageDiff.csproj create mode 100644 src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/Program.cs create mode 100644 src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/ZipExtensions.cs diff --git a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.Tasks.csproj b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.Tasks.csproj new file mode 100644 index 000000000000..878b136beb7a --- /dev/null +++ b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.Tasks.csproj @@ -0,0 +1,31 @@ + + + + Library + netstandard2.0 + enable + enable + true + true + $(NoWarn);NU5128;NU5129;NU5100 + tasks + true + + + + + + + + + + + + <_DiffToolPublishContent Include="$(OutputPath)PackageDiff\**" /> + + + + + diff --git a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.cs b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.cs new file mode 100644 index 000000000000..744779ccee8d --- /dev/null +++ b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.cs @@ -0,0 +1,28 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.Build.Framework; + +public class PackageDiff: Microsoft.Build.Utilities.ToolTask +{ + [Required] + public string BaselinePackage {get; set;} = ""; + + [Required] + public string TestPackage {get; set;} = ""; + + protected override string ToolName { get; } = $"PackageDiff" + (System.Environment.OSVersion.Platform == PlatformID.Unix ? "" : ".exe"); + + protected override MessageImportance StandardOutputLoggingImportance => MessageImportance.High; + protected override bool HandleTaskExecutionErrors() => true; + + protected override string GenerateFullPathToTool() + { + return Path.Combine(Path.GetDirectoryName(typeof(PackageDiff).Assembly.Location)!, "..", "..", "tools", ToolName); + } + + protected override string GenerateCommandLineCommands() + { + return $"\"{BaselinePackage}\" \"{TestPackage}\""; + } +} diff --git a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/build/PackageDiff.Tasks.props b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/build/PackageDiff.Tasks.props new file mode 100644 index 000000000000..239643148ec2 --- /dev/null +++ b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/build/PackageDiff.Tasks.props @@ -0,0 +1,9 @@ + + + + <_PackageDiffTasksAssemblyPath>$(MSBuildThisFileDirectory)\..\tasks\netstandard2.0\PackageDiff.Tasks.dll + + + + + diff --git a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/PackageDiff.csproj b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/PackageDiff.csproj new file mode 100644 index 000000000000..c74b0b783484 --- /dev/null +++ b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/PackageDiff.csproj @@ -0,0 +1,11 @@ + + + + Exe + net9.0 + enable + true + true + + + diff --git a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/Program.cs b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/Program.cs new file mode 100644 index 000000000000..924c0aba6451 --- /dev/null +++ b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/Program.cs @@ -0,0 +1,160 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Net.Http; +using System.Reflection; +using System.Reflection.Metadata; +using System.Reflection.PortableExecutable; +using System.Text; +using System.Threading.Tasks; + +public class PackageDiff +{ + public static async Task Main(string[] args) + { + if (args.Length != 2) + { + Console.WriteLine("Usage: PackageDiff "); + return 1; + } + + ZipArchive package1 = await GetZipArchiveAsync(args[0]); + ZipArchive package2 = await GetZipArchiveAsync(args[1]); + var diff = GetDiffs(package1, package2); + if (diff is not "") + { + Console.WriteLine(diff); + return 1; + } + return 0; + } + + public static async Task GetZipArchiveAsync(string arg) + { + if (File.Exists(arg)) + { + return new ZipArchive(File.OpenRead(arg)); + } + else if (Uri.TryCreate(arg, UriKind.RelativeOrAbsolute, out var uri)) + { + var webClient = new HttpClient(); + return new ZipArchive(await webClient.GetStreamAsync(uri)); + } + else + { + throw new ArgumentException($"Invalid path or url to package1: {arg}"); + } + } + + public static string GetDiffs(ZipArchive package1, ZipArchive package2) + { + StringBuilder output = new(); + + if (TryGetDiff(package1.Entries.Select(entry => entry.FullName).ToList(), package2.Entries.Select(entry => entry.FullName).ToList(), out var fileDiffs)) + { + output.AppendLine("File differences:"); + output.AppendLine(string.Join(Environment.NewLine, fileDiffs.Select(d => " " + d))); + output.AppendLine(); + } + + if (TryGetDiff(package1.GetNuspec().Lines(), package2.GetNuspec().Lines(), out var editedDiff)) + { + output.AppendLine("Nuspec differences:"); + output.AppendLine(string.Join(Environment.NewLine, editedDiff.Select(d => " " + d))); + output.AppendLine(); + } + var dlls1 = package1.Entries.Where(entry => entry.FullName.EndsWith(".dll")).ToImmutableDictionary(entry => entry.FullName, entry => entry); + var dlls2 = package2.Entries.Where(entry => entry.FullName.EndsWith(".dll")).ToImmutableDictionary(entry => entry.FullName, entry => entry); + foreach (var kvp in dlls1) + { + var dllPath = kvp.Key; + var dll1 = kvp.Value; + if (dlls2.TryGetValue(dllPath, out ZipArchiveEntry? dll2)) + { + try + { + var version1 = new PEReader(dll1.Open().ReadToEnd().ToImmutableArray()).GetMetadataReader().GetAssemblyDefinition().Version.ToString(); + var version2 = new PEReader(dll2.Open().ReadToEnd().ToImmutableArray()).GetMetadataReader().GetAssemblyDefinition().Version.ToString(); + if (version1 != version2) + { + output.AppendLine($"Assembly {dllPath} has different versions: {version1} and {version2}"); + } + } + catch (InvalidOperationException) + { } + } + } + return output.ToString(); + } + + public static bool TryGetDiff(List originalLines, List modifiedLines, out List formattedDiff) + { + // Edit distance algorithm: https://en.wikipedia.org/wiki/Longest_common_subsequence + + int[,] dp = new int[originalLines.Count + 1, modifiedLines.Count + 1]; + + // Initialize first row and column + for (int i = 0; i <= originalLines.Count; i++) + { + dp[i, 0] = i; + } + for (int j = 0; j <= modifiedLines.Count; j++) + { + dp[0, j] = j; + } + + // Compute edit distance + for (int i = 1; i <= originalLines.Count; i++) + { + for (int j = 1; j <= modifiedLines.Count; j++) + { + if (string.Compare(originalLines[i - 1], modifiedLines[j - 1]) == 0) + { + dp[i, j] = dp[i - 1, j - 1]; + } + else + { + dp[i, j] = 1 + Math.Min(dp[i - 1, j], dp[i, j - 1]); + } + } + } + + // Trace back the edits + int row = originalLines.Count; + int col = modifiedLines.Count; + + formattedDiff = []; + while (row > 0 || col > 0) + { + if (row > 0 && col > 0 && string.Compare(originalLines[row - 1], modifiedLines[col - 1]) == 0) + { + formattedDiff.Add(" " + originalLines[row - 1]); + row--; + col--; + } + else if (col > 0 && (row == 0 || dp[row, col - 1] <= dp[row - 1, col])) + { + formattedDiff.Add("+ " + modifiedLines[col - 1]); + col--; + } + else if (row > 0 && (col == 0 || dp[row, col - 1] > dp[row - 1, col])) + { + formattedDiff.Add("- " + originalLines[row - 1]); + row--; + } + else + { + throw new Exception("Unreachable code"); + } + } + formattedDiff.Reverse(); + return dp[originalLines.Count, modifiedLines.Count] != 0; + } + +} diff --git a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/ZipExtensions.cs b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/ZipExtensions.cs new file mode 100644 index 000000000000..914740b06867 --- /dev/null +++ b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/ZipExtensions.cs @@ -0,0 +1,60 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Text; + +static class ZipExtensions +{ + public static List Lines(this ZipArchiveEntry entry, Encoding? encoding = null) + { + return entry.ReadToString(encoding).Replace("\r\n", "\n").Split('\n').ToList(); + } + + public static string ReadToString(this ZipArchiveEntry entry, Encoding? encoding = null) + { + Stream stream = entry.Open(); + byte[] buffer = stream.ReadToEnd(); + // Remove UTF-8 BOM if present + int index = 0; + if (buffer[0] == 0xEF && buffer[1] == 0xBB && buffer[2] == 0xBF) + { + index = 3; + } + encoding ??= Encoding.UTF8; + string fileText = encoding.GetString(buffer, index, buffer.Length - index); + return fileText; + } + + public static ZipArchiveEntry GetNuspec(this ZipArchive package) + { + return package.Entries.Where(entry => entry.FullName.EndsWith(".nuspec")).Single(); + } + + public static byte[] ReadToEnd(this Stream stream) + { + int bufferSize = 2048; + byte[] buffer = new byte[bufferSize]; + int offset = 0; + while (true) + { + int bytesRead = stream.Read(buffer, offset, bufferSize - offset); + offset += bytesRead; + if (bytesRead == 0) + { + break; + } + if (offset == bufferSize) + { + Array.Resize(ref buffer, bufferSize * 2); + bufferSize *= 2; + } + } + Array.Resize(ref buffer, offset); + return buffer; + } +} From 158c2aa0edf7b246762fce6197af39948ab88f11 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Wed, 13 Mar 2024 13:53:24 -0700 Subject: [PATCH 02/41] Create test project for Unified Build validation --- .../VersionIdentifier.cs | 4 +- .../eng/unifiedBuildvalidation.targets | 31 ++++++ .../BaselineHelper.cs | 6 +- .../DotNetHelper.cs | 24 ++-- .../SdkContentTests.cs | 105 +++++++++++++----- .../Utilities.cs | 2 +- .../Config.cs | 49 ++++++++ ...Microsoft.DotNet.UnifiedBuild.Tests.csproj | 44 ++++++++ .../SdkAssemblyVersionDiffExclusions.txt | 16 +++ .../assets/SdkFileDiffExclusions.txt | 24 ++++ .../MsftToSbSdkAssemblyVersions.diff | 1 + .../assets/baselines/MsftToSbSdkFiles.diff | 43 +++++++ 12 files changed, 303 insertions(+), 46 deletions(-) create mode 100644 src/SourceBuild/content/eng/unifiedBuildvalidation.targets create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkAssemblyVersionDiffExclusions.txt create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions.txt create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkAssemblyVersions.diff create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles.diff diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/VersionIdentifier.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/VersionIdentifier.cs index 2150a721197f..38a3eafa8c79 100644 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/VersionIdentifier.cs +++ b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/VersionIdentifier.cs @@ -215,7 +215,7 @@ public static class VersionIdentifier /// Asset name without versions public static string RemoveVersions(string assetName, string replacement = "") { - string[] pathSegments = assetName.Split('/'); + string[] pathSegments = assetName.Split('/', '\\'); // Remove the version number from each segment, then join back together and // remove any useless character sequences. @@ -252,6 +252,6 @@ public static string RemoveVersions(string assetName, string replacement = "") public static bool AreVersionlessEqual(string assetName1, string assetName2) { - return RemoveVersions(assetName1) == RemoveVersions(assetName2); + return RemoveVersions(assetName1, "{VERSION}") == RemoveVersions(assetName2, "{VERSION}"); } } diff --git a/src/SourceBuild/content/eng/unifiedBuildvalidation.targets b/src/SourceBuild/content/eng/unifiedBuildvalidation.targets new file mode 100644 index 000000000000..dc601450c4c5 --- /dev/null +++ b/src/SourceBuild/content/eng/unifiedBuildvalidation.targets @@ -0,0 +1,31 @@ + + + + $([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'test', 'Microsoft.DotNet.UnifiedBuild.Tests')) + + + + + + + + + + + normal + + + + + + + diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/BaselineHelper.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/BaselineHelper.cs index 6b7c6f71a50f..a5ca6a154033 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/BaselineHelper.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/BaselineHelper.cs @@ -96,7 +96,7 @@ public static string RemoveRids(string diff, bool isPortable = false) => public static string RemoveVersions(string source) { // Remove version numbers for examples like "roslyn4.1", "net8.0", and "netstandard2.1". - string pathSeparator = Regex.Escape(Path.DirectorySeparatorChar.ToString()); + string pathSeparator = $"[{Regex.Escape(@"\")}|{Regex.Escape(@"/")}]"; string result = Regex.Replace(source, $@"{pathSeparator}(net|roslyn)[1-9]+\.[0-9]+{pathSeparator}", match => { string wordPart = match.Groups[1].Value; @@ -111,10 +111,10 @@ public static string RemoveVersions(string source) // - The version may have one or more release identifiers that begin with '.' or '-' // - The version should end before a path separator, '.', '-', or '/' Regex semanticVersionRegex = new( - @"(?<=[./-])(0|[1-9]\d*)\.(0|[1-9]\d*)(\.(0|[1-9]\d*))+" + @"(?<=[./\\-])(0|[1-9]\d*)\.(0|[1-9]\d*)(\.(0|[1-9]\d*))+" + @"(((?:[-.]((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)))+" + @"(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?" - + @"(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?(?=[/.-])"); + + @"(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?(?=[/\\.-])"); return semanticVersionRegex.Replace(result, SemanticVersionPlaceholder); } diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetHelper.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetHelper.cs index 291d492ed1a8..c662eaf7647b 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetHelper.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetHelper.cs @@ -43,16 +43,16 @@ public DotNetHelper(ITestOutputHelper outputHelper) } IsMonoRuntime = DetermineIsMonoRuntime(Config.DotNetDirectory); - if (!Directory.Exists(ProjectsDirectory)) - { - Directory.CreateDirectory(ProjectsDirectory); - InitNugetConfig(); - } - - if (!Directory.Exists(PackagesDirectory)) - { - Directory.CreateDirectory(PackagesDirectory); - } + // if (!Directory.Exists(ProjectsDirectory)) + // { + // Directory.CreateDirectory(ProjectsDirectory); + // InitNugetConfig(); + // } + + // if (!Directory.Exists(PackagesDirectory)) + // { + // Directory.CreateDirectory(PackagesDirectory); + // } } } @@ -105,7 +105,7 @@ public void ExecuteCmd(string args, string? workingDirectory = null, Action configureProcess(process, workingDirectory), millisecondTimeout: millisecondTimeout); - + if (expectedExitCode != null) { ExecuteHelper.ValidateExitCode(executeResult, (int) expectedExitCode); } @@ -243,7 +243,7 @@ private void ExecuteWeb(string projectName, string args, string workingDirectory { throw validator.ValidationException; } - } + } private static string GetBinLogOption(string projectName, string command, string? differentiator = null) { diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/SdkContentTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/SdkContentTests.cs index 29bb7dbc55ca..d78b2e8e4457 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/SdkContentTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/SdkContentTests.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Data; using System.IO; @@ -10,6 +11,7 @@ using System.Linq; using System.Reflection; using System.Text.RegularExpressions; +using System.Threading.Tasks; using Microsoft.Extensions.FileSystemGlobbing; using Xunit; using Xunit.Abstractions; @@ -118,27 +120,33 @@ private static void WriteAssemblyVersionsToFile(Dictionary ass private Dictionary GetMsftSdkAssemblyVersions( string msftSdkPath, Dictionary sbSdkAssemblyVersions) { - Dictionary msftSdkAssemblyVersions = new(); + ConcurrentDictionary msftSdkAssemblyVersions = new(); + var tasks = new List(); foreach ((string relativePath, _) in sbSdkAssemblyVersions) { - // Now we want to find the corresponding file that exists in the MSFT SDK. - // We've already replaced version numbers with placeholders in the path. - // So we can't directly use the relative path to find the corresponding file. Instead, - // we need to replace the version placeholders with wildcards and find the path through path matching. - string file = Path.Combine(msftSdkPath, relativePath); - Matcher matcher = BaselineHelper.GetFileMatcherFromPath(relativePath); + var t = Task.Run(() => + { + // Now we want to find the corresponding file that exists in the MSFT SDK. + // We've already replaced version numbers with placeholders in the path. + // So we can't directly use the relative path to find the corresponding file. Instead, + // we need to replace the version placeholders with wildcards and find the path through path matching. + string file = Path.Combine(msftSdkPath, relativePath); + Matcher matcher = BaselineHelper.GetFileMatcherFromPath(relativePath); - file = FindMatchingFilePath(msftSdkPath, matcher, relativePath); + file = FindMatchingFilePath(msftSdkPath, matcher, relativePath); - if (!File.Exists(file)) - { - continue; - } + if (!File.Exists(file)) + { + return; + } - AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); - msftSdkAssemblyVersions.Add(BaselineHelper.RemoveVersions(relativePath), GetVersion(assemblyName)); + AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); + Assert.True(msftSdkAssemblyVersions.TryAdd(BaselineHelper.RemoveVersions(relativePath), GetVersion(assemblyName))); + }); + tasks.Add(t); } - return msftSdkAssemblyVersions; + Task.WaitAll(tasks.ToArray()); + return msftSdkAssemblyVersions.ToDictionary(); } // It's known that assembly versions can be different between builds in their revision field. Disregard that difference @@ -171,24 +179,65 @@ private string FindMatchingFilePath(string rootDir, Matcher matcher, string repr { IEnumerable exclusionFilters = GetSdkDiffExclusionFilters(SourceBuildSdkType) .Select(filter => filter.TrimStart("./".ToCharArray())); - Dictionary sbSdkAssemblyVersions = new(); - foreach (string file in Directory.EnumerateFiles(sbSdkPath, "*", SearchOption.AllDirectories)) + ConcurrentDictionary sbSdkAssemblyVersions = new(); + List tasks = new List(); + foreach (string dir in Directory.EnumerateDirectories(sbSdkPath, "*", SearchOption.AllDirectories).Append(sbSdkPath)) { - string fileExt = Path.GetExtension(file); - if (fileExt.Equals(".dll", StringComparison.OrdinalIgnoreCase) || - fileExt.Equals(".exe", StringComparison.OrdinalIgnoreCase)) + var t = Task.Run(() => { - AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); - string relativePath = Path.GetRelativePath(sbSdkPath, file); - string normalizedPath = BaselineHelper.RemoveVersions(relativePath); - - if (!Utilities.IsFileExcluded(normalizedPath, exclusionFilters)) + foreach (string file in Directory.EnumerateFiles(dir, "*", SearchOption.TopDirectoryOnly)) { - sbSdkAssemblyVersions.Add(normalizedPath, GetVersion(assemblyName)); + string fileExt = Path.GetExtension(file); + if (fileExt.Equals(".dll", StringComparison.OrdinalIgnoreCase) || + fileExt.Equals(".exe", StringComparison.OrdinalIgnoreCase)) + { + string relativePath = Path.GetRelativePath(sbSdkPath, file); + string normalizedPath = BaselineHelper.RemoveVersions(relativePath); + if (!Utilities.IsFileExcluded(normalizedPath, exclusionFilters)) + { + try + { + AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); + Assert.True(sbSdkAssemblyVersions.TryAdd(normalizedPath, GetVersion(assemblyName))); + } + catch (BadImageFormatException) + { + Console.WriteLine($"BadImageFormatException: {file}"); + } + } + } } - } + }); + tasks.Add(t); } - return sbSdkAssemblyVersions; + //foreach (string file in Directory.EnumerateFiles(sbSdkPath, "*", SearchOption.AllDirectories)) + //{ + // string fileExt = Path.GetExtension(file); + // if (fileExt.Equals(".dll", StringComparison.OrdinalIgnoreCase) || + // fileExt.Equals(".exe", StringComparison.OrdinalIgnoreCase)) + // { + // string relativePath = Path.GetRelativePath(sbSdkPath, file); + // string normalizedPath = BaselineHelper.RemoveVersions(relativePath); + // if (!Utilities.IsFileExcluded(normalizedPath, exclusionFilters)) + // { + // var t = Task.Run(() => + // { + // try + // { + // AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); + // sbSdkAssemblyVersions.Add(normalizedPath, GetVersion(assemblyName)); + // } + // catch (BadImageFormatException) + // { + // Console.WriteLine($"BadImageFormatException: {file}"); + // } + // }); + // tasks.Add(t); + // } + // } + //} + Task.WaitAll(tasks.ToArray()); + return sbSdkAssemblyVersions.ToDictionary(); } private void WriteTarballFileList(string? tarballPath, string outputFileName, bool isPortable, string sdkType) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Utilities.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Utilities.cs index 228a65a61e94..55377b29a387 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Utilities.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Utilities.cs @@ -23,7 +23,7 @@ public static class Utilities /// Returns whether the given file path is excluded by the given exclusions using glob file matching. /// public static bool IsFileExcluded(string filePath, IEnumerable exclusions) => - GetMatchingFileExclusions(filePath, exclusions, exclusion => exclusion).Any(); + GetMatchingFileExclusions(filePath.Replace('\\', '/'), exclusions, exclusion => exclusion).Any(); public static IEnumerable GetMatchingFileExclusions(string filePath, IEnumerable exclusions, Func getExclusionExpression) => exclusions.Where(exclusion => FileSystemName.MatchesSimpleExpression(getExclusionExpression(exclusion), filePath)); diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs new file mode 100644 index 000000000000..25aff9d34363 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs @@ -0,0 +1,49 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.IO; + +namespace Microsoft.DotNet.SourceBuild.SmokeTests; + +internal static class Config +{ + public const string DotNetDirectoryEnv = "UNIFIED_BUILD_VALIDATION_DOTNET_DIR"; + public const string IncludeArtifactsSizeEnv = "UNIFIED_BUILD_VALIDATION_INCLUDE_ARTIFACTSSIZE"; + public const string MsftSdkTarballPathEnv = "UNIFIED_BUILD_VALIDATION_MSFT_SDK_TARBALL_PATH"; + public const string PoisonReportPathEnv = "UNIFIED_BUILD_VALIDATION_POISON_REPORT_PATH"; + public const string PortableRidEnv = "UNIFIED_BUILD_VALIDATION_PORTABLE_RID"; + public const string PrereqsPathEnv = "UNIFIED_BUILD_VALIDATION_PREREQS_PATH"; + public const string CustomPackagesPathEnv = "UNIFIED_BUILD_VALIDATION_CUSTOM_PACKAGES_PATH"; + public const string SdkTarballPathEnv = "UNIFIED_BUILD_VALIDATION_SDK_TARBALL_PATH"; + public const string SourceBuiltArtifactsPathEnv = "UNIFIED_BUILD_VALIDATION_SOURCEBUILT_ARTIFACTS_PATH"; + public const string TargetRidEnv = "UNIFIED_BUILD_VALIDATION_TARGET_RID"; + public const string WarnSdkContentDiffsEnv = "UNIFIED_BUILD_VALIDATION_WARN_SDK_CONTENT_DIFFS"; + public const string WarnLicenseScanDiffsEnv = "UNIFIED_BUILD_VALIDATION_WARN_LICENSE_SCAN_DIFFS"; + public const string RunningInCIEnv = "UNIFIED_BUILD_VALIDATION_RUNNING_IN_CI"; + public const string LicenseScanPathEnv = "UNIFIED_BUILD_VALIDATION_LICENSE_SCAN_PATH"; + + public static string DotNetDirectory { get; } = + Environment.GetEnvironmentVariable(DotNetDirectoryEnv) ?? Path.Combine(Directory.GetCurrentDirectory(), ".dotnet"); + public static string? MsftSdkTarballPath { get; } = Environment.GetEnvironmentVariable(MsftSdkTarballPathEnv); + public static string PortableRid { get; } = Environment.GetEnvironmentVariable(PortableRidEnv) ?? + throw new InvalidOperationException($"'{Config.PortableRidEnv}' must be specified"); + public static string? PrereqsPath { get; } = Environment.GetEnvironmentVariable(PrereqsPathEnv); + public static string? CustomPackagesPath { get; } = Environment.GetEnvironmentVariable(CustomPackagesPathEnv); + public static string? SdkTarballPath { get; } = Environment.GetEnvironmentVariable(SdkTarballPathEnv); + public static string? SourceBuiltArtifactsPath { get; } = Environment.GetEnvironmentVariable(SourceBuiltArtifactsPathEnv); + public static string TargetRid { get; } = Environment.GetEnvironmentVariable(TargetRidEnv) ?? + throw new InvalidOperationException($"'{Config.TargetRidEnv}' must be specified"); + public static string TargetArchitecture { get; } = TargetRid.Split('-')[1]; + public static bool WarnOnSdkContentDiffs { get; } = + bool.TryParse(Environment.GetEnvironmentVariable(WarnSdkContentDiffsEnv), out bool warnOnSdkContentDiffs) && warnOnSdkContentDiffs; + public static bool WarnOnLicenseScanDiffs { get; } = + bool.TryParse(Environment.GetEnvironmentVariable(WarnLicenseScanDiffsEnv), out bool warnOnLicenseScanDiffs) && warnOnLicenseScanDiffs; + + // Indicates whether the tests are being run in the context of a CI pipeline + public static bool RunningInCI { get; } = + bool.TryParse(Environment.GetEnvironmentVariable(RunningInCIEnv), out bool runningInCI) && runningInCI; + + public static string? LicenseScanPath { get; } = Environment.GetEnvironmentVariable(LicenseScanPathEnv); +} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj new file mode 100644 index 000000000000..a7830912f5b7 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -0,0 +1,44 @@ + + + + net9.0 + enable + false + $(DefaultExcludesInProjectFolder);assets/**/* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkAssemblyVersionDiffExclusions.txt b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkAssemblyVersionDiffExclusions.txt new file mode 100644 index 000000000000..1b5390e2a754 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkAssemblyVersionDiffExclusions.txt @@ -0,0 +1,16 @@ +# Contains the list of files whose assembly versions are to be excluded from comparison between the MSFT & SB SDK. +# These exclusions only take effect if the assembly version of the file in the SB SDK is equal to or greater than +# the version in the MSFT SDK. If the version is less, the file will show up in the results as this is not a scenario +# that is valid for shipping. +# +# This list is processed using FileSystemName.MatchesSimpleExpression +# +# Examples +# 'folder/*' matches 'folder/' and 'folder/abc' +# 'folder/?*' matches 'folder/abc' but not 'folder/' +# +# We do not want to filter-out folder entries, therefore, we should use: '?*' and not just '*' + +./sdk/x.y.z/TestHostNetFramework/x64/msdia140.dll +./sdk/x.y.z/TestHostNetFramework/x86/msdia140.dll +./sdk/x.y.z/datacollector.dll diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions.txt b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions.txt new file mode 100644 index 000000000000..efe2bec15a9f --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions.txt @@ -0,0 +1,24 @@ +# This list is processed using FileSystemName.MatchesSimpleExpression +# +# Format +# {msft|sb}, [# comment] +# msft = Microsoft built SDK +# sb = source-built SDK +# +# Examples +# 'folder/*' matches 'folder/' and 'folder/abc' +# 'folder/?*' matches 'folder/abc' but not 'folder/' + +msft,./sdk/x.y.z/TestHostNetFramework/x64/msdia140.dll +msft,./sdk/x.y.z/TestHostNetFramework/x86/msdia140.dll +msft,./sdk/x.y.z/datacollector.dll + +sb,./sdk/x.y.z/TestHostNetFramework/x64/msdia140.dll +sb,./sdk/x.y.z/TestHostNetFramework/x86/msdia140.dll +sb,./sdk/x.y.z/datacollector.dll + +msft,./sdk/x.y.z/Containers/containerize/* +sb,./sdk/x.y.z/Containers/containerize/* + +msft,./sdk/x.y.z/Containers/tasks/net472/* +sb,./sdk/x.y.z/Containers/tasks/net472/* diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkAssemblyVersions.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkAssemblyVersions.diff new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkAssemblyVersions.diff @@ -0,0 +1 @@ + diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles.diff new file mode 100644 index 000000000000..745589d6b7c0 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles.diff @@ -0,0 +1,43 @@ +diff --git a/msftSdkFiles.txt b/sbSdkFiles.txt +index ------------ +--- a/msftSdkFiles.txt ++++ b/sbSdkFiles.txt +@@ ------------ @@ + ./packs/Microsoft.AspNetCore.App.Ref/x.y.z/ref\netx.y\System.Security.Cryptography.Xml.xml + ./packs/Microsoft.AspNetCore.App.Ref/x.y.z/ref\netx.y\System.Threading.RateLimiting.dll + ./packs/Microsoft.AspNetCore.App.Ref/x.y.z/ref\netx.y\System.Threading.RateLimiting.xml +-./packs/Microsoft.NETCore.App.Host.linux-x64/ +-./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/ +-./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/ +-./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/ +-./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/ +-./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/apphost +-./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/coreclr_delegates.h +-./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/hostfxr.h +-./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/libnethost.a +-./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/libnethost.so +-./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/nethost.h +-./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/singlefilehost ++./packs/Microsoft.NETCore.App.Host.banana-rid/ ++./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/ ++./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/ ++./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/ ++./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/ ++./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/apphost ++./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/coreclr_delegates.h ++./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/hostfxr.h ++./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/libnethost.a ++./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/libnethost.so ++./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/nethost.h ++./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/singlefilehost + ./packs/Microsoft.NETCore.App.Ref/ + ./packs/Microsoft.NETCore.App.Ref/x.y.z/ + ./packs/Microsoft.NETCore.App.Ref/x.y.z/analyzers/ +@@ ------------ @@ + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/runtimes/win/lib/ + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/runtimes/win/lib\netx.y\ + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/runtimes/win/lib\netx.y\System.Diagnostics.EventLog.dll +-./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/runtimes/win/lib\netx.y\System.Diagnostics.EventLog.Messages.dll + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/runtimes/win/lib\netx.y\System.Security.Cryptography.Pkcs.dll + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/runtimes/win/lib\netx.y\System.Windows.Extensions.dll + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/System.CodeDom.dll \ No newline at end of file From 1991c7b8ddccc6286db84a6d0147dcfb59cd7efb Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Mon, 18 Mar 2024 15:33:56 -0700 Subject: [PATCH 03/41] Add initial SDK test project for unified build --- src/SourceBuild/content/build.proj | 1 + .../eng/unifiedBuildvalidation.targets | 28 +- .../.gitignore | 484 ++++++++++++++++++ .../BaselineHelper.cs | 135 +++++ .../DotNetHelper.cs | 341 ++++++++++++ .../DotNetTemplate.cs | 21 + .../Exclusions.cs | 46 ++ .../ExecuteHelper.cs | 132 +++++ ...Microsoft.DotNet.UnifiedBuild.Tests.csproj | 15 - .../SdkContentTests.cs | 253 +++++++++ .../SdkTests.cs | 20 + .../SkippableFactAttribute.cs | 53 ++ .../TestBase.cs | 25 + .../Utilities.cs | 222 ++++++++ .../assets/NativeDlls-win-any.txt | 49 ++ .../assets/NativeDlls-win-x64.txt | 14 + .../assets/NativeDlls.txt | 16 + .../SdkAssemblyVersionDiffExclusions.txt | 3 - ...s.diff => MsftToSbSdkFiles-linux-x64.diff} | 0 .../baselines/MsftToSbSdkFiles-win-x64.diff | 0 20 files changed, 1837 insertions(+), 21 deletions(-) create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/.gitignore create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/BaselineHelper.cs create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetHelper.cs create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetTemplate.cs create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Exclusions.cs create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/ExecuteHelper.cs create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkTests.cs create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SkippableFactAttribute.cs create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/TestBase.cs create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Utilities.cs create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-any.txt create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-x64.txt create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls.txt rename src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/{MsftToSbSdkFiles.diff => MsftToSbSdkFiles-linux-x64.diff} (100%) create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-win-x64.diff diff --git a/src/SourceBuild/content/build.proj b/src/SourceBuild/content/build.proj index 66ed6262b607..fb64e7ddd2a2 100644 --- a/src/SourceBuild/content/build.proj +++ b/src/SourceBuild/content/build.proj @@ -27,6 +27,7 @@ + $([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'test', 'Microsoft.DotNet.UnifiedBuild.Tests')) - + - + %(SdkTarballItem.Identity) normal + + + + + + + + + + + + + <_BuiltSdkArchivePath>@(_BuiltSdkArchivePath) + + + diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/.gitignore b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/.gitignore new file mode 100644 index 000000000000..dd315077a612 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/.gitignore @@ -0,0 +1,484 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from `dotnet new gitignore` + +# dotenv files +.env + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml +.idea/ + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg +*.app + +# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# Vim temporary swap files +*.swp diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/BaselineHelper.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/BaselineHelper.cs new file mode 100644 index 000000000000..4beb6245a0c7 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/BaselineHelper.cs @@ -0,0 +1,135 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using Microsoft.Extensions.FileSystemGlobbing; +using Xunit; +using Xunit.Abstractions; + +namespace Microsoft.DotNet.SourceBuild.SmokeTests +{ + internal class BaselineHelper + { + private const string SemanticVersionPlaceholder = "x.y.z"; + private const string SemanticVersionPlaceholderMatchingPattern = "*.*.*"; // wildcard pattern used to match on the version represented by the placeholder + private const string NonSemanticVersionPlaceholder = "x.y"; + private const string NonSemanticVersionPlaceholderMatchingPattern = "*.*"; // wildcard pattern used to match on the version represented by the placeholder + + public static void CompareEntries(string baselineFileName, IOrderedEnumerable actualEntries) + { + IEnumerable baseline = File.ReadAllLines(GetBaselineFilePath(baselineFileName)); + string[] missingEntries = actualEntries.Except(baseline).ToArray(); + string[] extraEntries = baseline.Except(actualEntries).ToArray(); + + string? message = null; + if (missingEntries.Length > 0) + { + message = $"Missing entries in '{baselineFileName}' baseline: {Environment.NewLine}{string.Join(Environment.NewLine, missingEntries)}{Environment.NewLine}{Environment.NewLine}"; + } + + if (extraEntries.Length > 0) + { + message += $"Extra entries in '{baselineFileName}' baseline: {Environment.NewLine}{string.Join(Environment.NewLine, extraEntries)}{Environment.NewLine}{Environment.NewLine}"; + } + + Assert.Null(message); + } + + public static void CompareBaselineContents(string baselineFileName, string actualContents, ITestOutputHelper outputHelper, bool warnOnDiffs = false, string baselineSubDir = "") + { + string actualFilePath = Path.Combine(TestBase.LogsDirectory, $"Updated{baselineFileName}"); + File.WriteAllText(actualFilePath, actualContents); + + CompareFiles(GetBaselineFilePath(baselineFileName, baselineSubDir), actualFilePath, outputHelper, warnOnDiffs); + } + + public static void CompareFiles(string expectedFilePath, string actualFilePath, ITestOutputHelper outputHelper, bool warnOnDiffs = false) + { + string baselineFileText = File.ReadAllText(expectedFilePath).Trim(); + string actualFileText = File.ReadAllText(actualFilePath).Trim(); + + string? message = null; + + if (baselineFileText != actualFileText) + { + // Retrieve a diff in order to provide a UX which calls out the diffs. + string diff = DiffFiles(expectedFilePath, actualFilePath, outputHelper); + string prefix = warnOnDiffs ? "##vso[task.logissue type=warning;]" : string.Empty; + message = $"{Environment.NewLine}{prefix}Expected file '{expectedFilePath}' does not match actual file '{actualFilePath}`. {Environment.NewLine}" + + $"{diff}{Environment.NewLine}"; + + if (warnOnDiffs) + { + outputHelper.WriteLine(message); + outputHelper.WriteLine("##vso[task.complete result=SucceededWithIssues;]"); + } + } + + if (!warnOnDiffs) + { + Assert.Null(message); + } + } + + public static string DiffFiles(string file1Path, string file2Path, ITestOutputHelper outputHelper) + { + (Process Process, string StdOut, string StdErr) diffResult = + ExecuteHelper.ExecuteProcess("git", $"diff --no-index {file1Path} {file2Path}", outputHelper); + + return diffResult.StdOut; + } + + public static string GetAssetsDirectory() => Path.Combine(Directory.GetCurrentDirectory(), "assets"); + + public static string GetBaselineFilePath(string baselineFileName, string baselineSubDir = "") => + Path.Combine(GetAssetsDirectory(), "baselines", baselineSubDir, baselineFileName); + + public static string RemoveRids(string diff, bool isPortable = false) => + isPortable ? diff.Replace(Config.PortableRid, "portable-rid") : diff.Replace(Config.TargetRid, "banana-rid"); + + public static string RemoveVersions(string source) + { + // Remove version numbers for examples like "roslyn4.1", "net8.0", and "netstandard2.1". + string pathSeparator = $"[{Regex.Escape(@"\")}|{Regex.Escape(@"/")}]"; + string result = Regex.Replace(source, $@"{pathSeparator}(net|roslyn)[1-9]+\.[0-9]+{pathSeparator}", match => + { + string wordPart = match.Groups[1].Value; + return $"{Path.DirectorySeparatorChar}{wordPart}{NonSemanticVersionPlaceholder}{Path.DirectorySeparatorChar}"; + }); + + // Remove semantic versions + // Regex source: https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string + // The regex from https://semver.org has been modified to account for the following: + // - The version should be preceded by a path separator, '.', '-', or '/' + // - The version should match a release identifier that begins with '.' or '-' + // - The version may have one or more release identifiers that begin with '.' or '-' + // - The version should end before a path separator, '.', '-', or '/' + Regex semanticVersionRegex = new( + @"(?<=[./\\-_])(0|[1-9]\d*)\.(0|[1-9]\d*)(\.(0|[1-9]\d*))+" + + @"(((?:[-.]((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)))+" + + @"(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?" + + @"(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?(?=[/\\.-_])"); + return semanticVersionRegex.Replace(result, SemanticVersionPlaceholder); + } + + /// + /// This returns a that can be used to match on a path whose versions have been removed via + /// . + /// + public static Matcher GetFileMatcherFromPath(string path) + { + path = path + .Replace(SemanticVersionPlaceholder, SemanticVersionPlaceholderMatchingPattern) + .Replace(NonSemanticVersionPlaceholder, NonSemanticVersionPlaceholderMatchingPattern); + Matcher matcher = new(); + matcher.AddInclude(path); + return matcher; + } + } +} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetHelper.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetHelper.cs new file mode 100644 index 000000000000..c662eaf7647b --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetHelper.cs @@ -0,0 +1,341 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Sockets; +using Xunit; +using Xunit.Abstractions; + +namespace Microsoft.DotNet.SourceBuild.SmokeTests; + +internal class DotNetHelper +{ + private static readonly object s_lockObj = new(); + + public static string DotNetPath { get; } = Path.Combine(Config.DotNetDirectory, "dotnet"); + public static string PackagesDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), "packages"); + public static string ProjectsDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), $"projects-{DateTime.Now:yyyyMMddHHmmssffff}"); + + private ITestOutputHelper OutputHelper { get; } + public bool IsMonoRuntime { get; } + + public DotNetHelper(ITestOutputHelper outputHelper) + { + OutputHelper = outputHelper; + + lock (s_lockObj) + { + if (!Directory.Exists(Config.DotNetDirectory)) + { + if (!File.Exists(Config.SdkTarballPath)) + { + throw new InvalidOperationException($"Tarball path '{Config.SdkTarballPath}' specified in {Config.SdkTarballPath} does not exist."); + } + + Directory.CreateDirectory(Config.DotNetDirectory); + Utilities.ExtractTarball(Config.SdkTarballPath, Config.DotNetDirectory, outputHelper); + } + IsMonoRuntime = DetermineIsMonoRuntime(Config.DotNetDirectory); + + // if (!Directory.Exists(ProjectsDirectory)) + // { + // Directory.CreateDirectory(ProjectsDirectory); + // InitNugetConfig(); + // } + + // if (!Directory.Exists(PackagesDirectory)) + // { + // Directory.CreateDirectory(PackagesDirectory); + // } + } + } + + private static void InitNugetConfig() + { + bool useLocalPackages = !string.IsNullOrEmpty(Config.PrereqsPath); + string nugetConfigPrefix = useLocalPackages ? "local" : "online"; + string nugetConfigPath = Path.Combine(ProjectsDirectory, "NuGet.Config"); + File.Copy( + Path.Combine(BaselineHelper.GetAssetsDirectory(), $"{nugetConfigPrefix}.NuGet.Config"), + nugetConfigPath); + + if (useLocalPackages) + { + // When using local packages this feed is always required. It contains packages that are + // not produced by source-build but are required by the various project templates. + if (!Directory.Exists(Config.PrereqsPath)) + { + throw new InvalidOperationException( + $"Prereqs path '{Config.PrereqsPath}' specified in {Config.PrereqsPathEnv} does not exist."); + } + + string nugetConfig = File.ReadAllText(nugetConfigPath); + nugetConfig = nugetConfig.Replace("SMOKE_TEST_PACKAGE_FEED", Config.PrereqsPath); + + // This package feed is optional. You can use an additional feed of source-built packages to run the + // smoke-tests as offline as possible. + if (Config.CustomPackagesPath != null) + { + if (!Directory.Exists(Config.CustomPackagesPath)) + { + throw new ArgumentException($"Specified --with-packages {Config.CustomPackagesPath} does not exist."); + } + nugetConfig = nugetConfig.Replace("CUSTOM_PACKAGE_FEED", Config.CustomPackagesPath); + } + else + { + nugetConfig = string.Join(Environment.NewLine, nugetConfig.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Where(s => !s.Contains("CUSTOM_PACKAGE_FEED")).ToArray()); + } + File.WriteAllText(nugetConfigPath, nugetConfig); + } + } + + public void ExecuteCmd(string args, string? workingDirectory = null, Action? processConfigCallback = null, + int? expectedExitCode = 0, int millisecondTimeout = -1) + { + (Process Process, string StdOut, string StdErr) executeResult = ExecuteHelper.ExecuteProcess( + DotNetPath, + args, + OutputHelper, + configureCallback: (process) => configureProcess(process, workingDirectory), + millisecondTimeout: millisecondTimeout); + + if (expectedExitCode != null) { + ExecuteHelper.ValidateExitCode(executeResult, (int) expectedExitCode); + } + + void configureProcess(Process process, string? workingDirectory) + { + ConfigureProcess(process, workingDirectory); + + processConfigCallback?.Invoke(process); + } + } + + public static void ConfigureProcess(Process process, string? workingDirectory) + { + if (workingDirectory != null) + { + process.StartInfo.WorkingDirectory = workingDirectory; + } + + process.StartInfo.EnvironmentVariables["DOTNET_CLI_TELEMETRY_OPTOUT"] = "1"; + process.StartInfo.EnvironmentVariables["DOTNET_SKIP_FIRST_TIME_EXPERIENCE"] = "1"; + process.StartInfo.EnvironmentVariables["DOTNET_ROOT"] = Config.DotNetDirectory; + process.StartInfo.EnvironmentVariables["NUGET_PACKAGES"] = PackagesDirectory; + process.StartInfo.EnvironmentVariables["PATH"] = $"{Config.DotNetDirectory}:{Environment.GetEnvironmentVariable("PATH")}"; + } + + public void ExecuteBuild(string projectName) => + ExecuteCmd($"build {GetBinLogOption(projectName, "build")}", GetProjectDirectory(projectName)); + + /// + /// Create a new .NET project and return the path to the created project folder. + /// + public string ExecuteNew(string projectType, string name, string? language = null, string? customArgs = null) + { + string projectDirectory = GetProjectDirectory(name); + string options = $"--name {name} --output {projectDirectory}"; + if (language != null) + { + options += $" --language \"{language}\""; + } + if (string.IsNullOrEmpty(customArgs)) + { + options += $" {customArgs}"; + } + + ExecuteCmd($"new {projectType} {options}"); + + return projectDirectory; + } + + public void ExecutePublish(string projectName, DotNetTemplate template, bool? selfContained = null, string? rid = null, bool trimmed = false, bool readyToRun = false) + { + string options = string.Empty; + string binlogDifferentiator = string.Empty; + + if (selfContained.HasValue) + { + options += $"--self-contained {selfContained.Value.ToString().ToLowerInvariant()}"; + if (selfContained.Value) + { + binlogDifferentiator += "self-contained"; + if (!string.IsNullOrEmpty(rid)) + { + options += $" -r {rid}"; + binlogDifferentiator += $"-{rid}"; + } + if (trimmed) + { + options += " /p:PublishTrimmed=true"; + binlogDifferentiator += "-trimmed"; + } + if (readyToRun) + { + options += " /p:PublishReadyToRun=true"; + binlogDifferentiator += "-R2R"; + } + } + } + + string projDir = GetProjectDirectory(projectName); + string publishDir = Path.Combine(projDir, "bin", "publish"); + + ExecuteCmd( + $"publish {options} {GetBinLogOption(projectName, "publish", binlogDifferentiator)} -o {publishDir}", + projDir); + + if (template == DotNetTemplate.Console) + { + ExecuteCmd($"{projectName}.dll", publishDir, expectedExitCode: 0); + } + else if (template == DotNetTemplate.ClassLib || template == DotNetTemplate.BlazorWasm) + { + // Can't run the published output of classlib (no entrypoint) or WASM (needs a server) + } + // Assume it is a web-based template + else + { + ExecuteWebDll(projectName, publishDir, template); + } + } + + public void ExecuteRun(string projectName) => + ExecuteCmd($"run {GetBinLogOption(projectName, "run")}", GetProjectDirectory(projectName)); + + public void ExecuteRunWeb(string projectName, DotNetTemplate template) + { + // 'dotnet run' exit code differs between CoreCLR and Mono (https://github.com/dotnet/sdk/issues/30095). + int expectedExitCode = IsMonoRuntime ? 143 : 0; + + ExecuteWeb( + projectName, + $"run --no-launch-profile {GetBinLogOption(projectName, "run")}", + GetProjectDirectory(projectName), + template, + expectedExitCode); + } + + public void ExecuteWebDll(string projectName, string workingDirectory, DotNetTemplate template) => + ExecuteWeb(projectName, $"{projectName}.dll", workingDirectory, template, expectedExitCode: 0); + + public void ExecuteTest(string projectName) => + ExecuteCmd($"test {GetBinLogOption(projectName, "test")}", GetProjectDirectory(projectName)); + + private void ExecuteWeb(string projectName, string args, string workingDirectory, DotNetTemplate template, int expectedExitCode) + { + WebAppValidator validator = new(OutputHelper, template); + ExecuteCmd( + args, + workingDirectory, + processConfigCallback: validator.Validate, + expectedExitCode: expectedExitCode, + millisecondTimeout: 30000); + Assert.True(validator.IsValidated); + if (validator.ValidationException is not null) + { + throw validator.ValidationException; + } + } + + private static string GetBinLogOption(string projectName, string command, string? differentiator = null) + { + string fileName = $"{projectName}-{command}"; + if (!string.IsNullOrEmpty(differentiator)) + { + fileName += $"-{differentiator}"; + } + + return $"/bl:{Path.Combine(TestBase.LogsDirectory, $"{fileName}.binlog")}"; + } + + private static bool DetermineIsMonoRuntime(string dotnetRoot) + { + string sharedFrameworkRoot = Path.Combine(dotnetRoot, "shared", "Microsoft.NETCore.App"); + if (!Directory.Exists(sharedFrameworkRoot)) + { + return false; + } + + string? version = Directory.GetDirectories(sharedFrameworkRoot).FirstOrDefault(); + if (version is null) + { + return false; + } + + string sharedFramework = Path.Combine(sharedFrameworkRoot, version); + + // Check the presence of one of the mono header files. + return File.Exists(Path.Combine(sharedFramework, "mono-gc.h")); + } + + private static string GetProjectDirectory(string projectName) => Path.Combine(ProjectsDirectory, projectName); + + public static bool ShouldPublishComplex() => + !string.Equals(Config.TargetArchitecture,"ppc64le") && !string.Equals(Config.TargetArchitecture,"s390x"); + + private class WebAppValidator + { + private readonly ITestOutputHelper _outputHelper; + private readonly DotNetTemplate _template; + + public WebAppValidator(ITestOutputHelper outputHelper, DotNetTemplate template) + { + _outputHelper = outputHelper; + _template = template; + } + + public bool IsValidated { get; set; } + public Exception? ValidationException { get; set; } + + private static int GetAvailablePort() + { + TcpListener listener = new(IPAddress.Loopback, 0); + listener.Start(); + int port = ((IPEndPoint)listener.LocalEndpoint).Port; + listener.Stop(); + return port; + } + + public void Validate(Process process) + { + int port = GetAvailablePort(); + process.StartInfo.EnvironmentVariables.Add("ASPNETCORE_HTTP_PORTS", port.ToString()); + process.OutputDataReceived += new DataReceivedEventHandler((sender, e) => + { + try + { + if (e.Data?.Contains("Application started. Press Ctrl+C to shut down.") ?? false) + { + _outputHelper.WriteLine("Detected app has started. Sending web request to validate..."); + + using HttpClient httpClient = new(); + string url = $"http://localhost:{port}"; + if (_template == DotNetTemplate.WebApi) + { + url += "/WeatherForecast"; + } + + using HttpResponseMessage resultMsg = httpClient.GetAsync(new Uri(url)).Result; + _outputHelper.WriteLine($"Status code returned: {resultMsg.StatusCode}"); + resultMsg.EnsureSuccessStatusCode(); + IsValidated = true; + + ExecuteHelper.ExecuteProcessValidateExitCode("kill", $"-s TERM {process.Id}", _outputHelper); + } + } + catch (Exception ex) + { + ValidationException = ex; + } + }); + } + } +} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetTemplate.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetTemplate.cs new file mode 100644 index 000000000000..0a30c7215631 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetTemplate.cs @@ -0,0 +1,21 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.DotNet.SourceBuild.SmokeTests; + +public enum DotNetTemplate +{ + Console, + ClassLib, + XUnit, + NUnit, + MSTest, + Web, + Mvc, + Razor, + BlazorWasm, + WebApi, + WebApp, + Worker, +} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Exclusions.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Exclusions.cs new file mode 100644 index 000000000000..63c58dafde43 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Exclusions.cs @@ -0,0 +1,46 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.IO.Enumeration; +using System.Linq; +using Microsoft.DotNet.SourceBuild.SmokeTests; + +public class Exclusions +{ + string _rid = Config.TargetRid; + + string[] GetRidSpecificExclusionFileNames(string path) + { + string filename = Path.GetFileNameWithoutExtension(path); + string extension = Path.GetExtension(path); + Debug.Assert(path == $"{filename}{extension}", $"{path} != {filename}{extension}"); + string[] parts = _rid.Split('-'); + string[] fileNames = new string[parts.Length+1]; + fileNames[0] = $"{filename}{extension}"; + for (int i = 1; i < parts.Length; i++) + { + fileNames[i] = $"{filename}-{string.Join('-', parts[..i])}-any{extension}"; + } + fileNames[parts.Length] = $"{filename}-{_rid}{extension}"; + return fileNames; + } + + public List GetFileExclusions(string? prefix = null) => GetRidSpecificExclusionFileNames("SdkFileDiffExclusions.txt").SelectMany(f => Utilities.TryParseExclusionsFile(f, prefix)).ToList(); + public List GetAssemblyVersionExclusions(string? prefix = null) => GetRidSpecificExclusionFileNames("SdkAssemblyVersionDiffExclusions.txt").SelectMany(f => Utilities.TryParseExclusionsFile(f, prefix)).ToList(); + public List GetNativeDllExclusions(string? prefix = null) => GetRidSpecificExclusionFileNames("NativeDlls.txt").SelectMany(f => Utilities.TryParseExclusionsFile(f, prefix)).ToList(); + public string GetBaselineFileDiffFileName() => GetRidSpecificExclusionFileNames("MsftToSbSdkFiles.diff").Last(); + + + string NormalizePath(string path) + { + return path.Replace('\\', '/'); + } + + bool IsFileExcluded(string file, string? prefix = null) + => GetFileExclusions(prefix).Any(exclusion => FileSystemName.MatchesSimpleExpression(exclusion, NormalizePath(file))); +} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/ExecuteHelper.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/ExecuteHelper.cs new file mode 100644 index 000000000000..129d96c24777 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/ExecuteHelper.cs @@ -0,0 +1,132 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Diagnostics; +using System.Linq; +using System.Text; +using Xunit.Abstractions; + +namespace Microsoft.DotNet.SourceBuild.SmokeTests; + +internal static class ExecuteHelper +{ + public static (Process Process, string StdOut, string StdErr) ExecuteProcess( + string fileName, + string args, + ITestOutputHelper outputHelper, + bool logOutput = false, + bool excludeInfo = false, + Action? configureCallback = null, + int millisecondTimeout = -1) + { + if (!excludeInfo) + { + outputHelper.WriteLine($"Executing: {fileName} {args}"); + } + + Process process = new() + { + EnableRaisingEvents = true, + StartInfo = + { + FileName = fileName, + Arguments = args, + RedirectStandardOutput = true, + RedirectStandardError = true, + } + }; + + // The `dotnet test` execution context sets a number of dotnet related ENVs that cause issues when executing + // dotnet commands. Clear these to avoid side effects. + foreach (string key in process.StartInfo.Environment.Keys.Where(key => key != "HOME").ToList()) + { + process.StartInfo.Environment.Remove(key); + } + + configureCallback?.Invoke(process); + + StringBuilder stdOutput = new(); + process.OutputDataReceived += new DataReceivedEventHandler( + (sender, e) => + { + lock (stdOutput) + { + stdOutput.AppendLine(e.Data); + } + }); + + StringBuilder stdError = new(); + process.ErrorDataReceived += new DataReceivedEventHandler( + (sender, e) => + { + lock (stdError) + { + stdError.AppendLine(e.Data); + } + }); + + process.Start(); + + process.BeginOutputReadLine(); + process.BeginErrorReadLine(); + process.WaitForExit(millisecondTimeout); + + if (!process.HasExited) + { + outputHelper.WriteLine($"Process did not exit. Killing {fileName} {args} after waiting {millisecondTimeout} milliseconds."); + process.Kill(true); + process.WaitForExit(); + } + + string output; + string error; + + lock (stdOutput) + { + output = stdOutput.ToString().Trim(); + } + + lock (stdError) + { + error = stdError.ToString().Trim(); + } + + if (logOutput) + { + if (!string.IsNullOrWhiteSpace(output)) + { + outputHelper.WriteLine(output); + } + + if (string.IsNullOrWhiteSpace(error)) + { + outputHelper.WriteLine(error); + } + } + + return (process, output, error); + } + + public static string ExecuteProcessValidateExitCode(string fileName, string args, ITestOutputHelper outputHelper) + { + (Process Process, string StdOut, string StdErr) result = ExecuteHelper.ExecuteProcess(fileName, args, outputHelper); + ValidateExitCode(result); + + return result.StdOut; + } + + public static void ValidateExitCode((Process Process, string StdOut, string StdErr) result, int expectedExitCode = 0) + { + if (result.Process.ExitCode != expectedExitCode) + { + ProcessStartInfo startInfo = result.Process.StartInfo; + string msg = $"Failed to execute {startInfo.FileName} {startInfo.Arguments}" + + $"{Environment.NewLine}Exit code: {result.Process.ExitCode}" + + $"{Environment.NewLine}{result.StdOut}" + + $"{Environment.NewLine}{result.StdErr}"; + throw new InvalidOperationException(msg); + } + } +} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index a7830912f5b7..2896655818cf 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -15,21 +15,6 @@ - - - - - - - - - - - - - - - diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs new file mode 100644 index 000000000000..4ae0d304d346 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs @@ -0,0 +1,253 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.IO.Enumeration; +using System.Linq; +using System.Reflection; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Microsoft.Extensions.FileSystemGlobbing; +using Xunit; +using Xunit.Abstractions; + +namespace Microsoft.DotNet.SourceBuild.SmokeTests; + +[Trait("Category", "SdkContent")] +public class SdkContentTests : SdkTests +{ + private const string MsftSdkType = "msft"; + private const string SourceBuildSdkType = "sb"; + + public SdkContentTests(ITestOutputHelper outputHelper) : base(outputHelper) { } + + /// + /// Verifies the file layout of the source built sdk tarball to the Microsoft build. + /// The differences are captured in baselines/MsftToSbSdkDiff.txt. + /// Version numbers that appear in paths are compared but are stripped from the baseline. + /// This makes the baseline durable between releases. This does mean however, entries + /// in the baseline may appear identical if the diff is version specific. + /// + [SkippableFact(new[] { Config.MsftSdkTarballPathEnv, Config.SdkTarballPathEnv }, skipOnNullOrWhiteSpaceEnv: true)] + public void CompareMsftToSbFileList() + { + const string msftFileListingFileName = "msftSdkFiles.txt"; + const string sbFileListingFileName = "sbSdkFiles.txt"; + WriteTarballFileList(Config.MsftSdkTarballPath, msftFileListingFileName, isPortable: true, MsftSdkType); + WriteTarballFileList(Config.SdkTarballPath, sbFileListingFileName, isPortable: true, SourceBuildSdkType); + + string diff = BaselineHelper.DiffFiles(msftFileListingFileName, sbFileListingFileName, OutputHelper); + diff = RemoveDiffMarkers(diff); + BaselineHelper.CompareBaselineContents(new Exclusions().GetBaselineFileDiffFileName(), diff, OutputHelper, Config.WarnOnSdkContentDiffs); + } + + [SkippableFact(new[] { Config.MsftSdkTarballPathEnv, Config.SdkTarballPathEnv }, skipOnNullOrWhiteSpaceEnv: true)] + public void CompareMsftToSbAssemblyVersions() + { + Assert.NotNull(Config.MsftSdkTarballPath); + Assert.NotNull(Config.SdkTarballPath); + + DirectoryInfo tempDir = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Path.GetRandomFileName())); + try + { + DirectoryInfo sbSdkDir = Directory.CreateDirectory(Path.Combine(tempDir.FullName, SourceBuildSdkType)); + Utilities.ExtractTarball(Config.SdkTarballPath, sbSdkDir.FullName, OutputHelper); + + DirectoryInfo msftSdkDir = Directory.CreateDirectory(Path.Combine(tempDir.FullName, MsftSdkType)); + Utilities.ExtractTarball(Config.MsftSdkTarballPath, msftSdkDir.FullName, OutputHelper); + + var t1 = Task.Run(() => GetSdkAssemblyVersions(sbSdkDir.FullName)); + var t2 = Task.Run(() => GetSdkAssemblyVersions(msftSdkDir.FullName)); + Task.WaitAll(t1, t2); + Dictionary sbSdkAssemblyVersions = t1.Result; + Dictionary msftSdkAssemblyVersions = t2.Result; + + RemoveExcludedAssemblyVersionPaths(sbSdkAssemblyVersions, msftSdkAssemblyVersions); + + const string SbVersionsFileName = "sb_assemblyversions.txt"; + WriteAssemblyVersionsToFile(sbSdkAssemblyVersions, SbVersionsFileName); + + const string MsftVersionsFileName = "msft_assemblyversions.txt"; + WriteAssemblyVersionsToFile(msftSdkAssemblyVersions, MsftVersionsFileName); + + string diff = BaselineHelper.DiffFiles(MsftVersionsFileName, SbVersionsFileName, OutputHelper); + diff = RemoveDiffMarkers(diff); + BaselineHelper.CompareBaselineContents("MsftToSbSdkAssemblyVersions.diff", diff, OutputHelper, Config.WarnOnSdkContentDiffs); + } + finally + { + tempDir.Delete(recursive: true); + } + } + + private static void RemoveExcludedAssemblyVersionPaths(Dictionary sbSdkAssemblyVersions, Dictionary msftSdkAssemblyVersions) + { + IEnumerable assemblyVersionDiffFilters = GetSdkAssemblyVersionDiffExclusionFilters() + .Select(filter => filter.TrimStart("./".ToCharArray())); + + // Remove any excluded files as long as SB SDK's file has the same or greater assembly version compared to the corresponding + // file in the MSFT SDK. If the version is less, the file will show up in the results as this is not a scenario + // that is valid for shipping. + string[] sbSdkFileArray = sbSdkAssemblyVersions.Keys.ToArray(); + for (int i = sbSdkFileArray.Length - 1; i >= 0; i--) + { + string assemblyPath = sbSdkFileArray[i]; + Version? sbVersion = sbSdkAssemblyVersions[assemblyPath]; + Version? msftVersion = msftSdkAssemblyVersions[assemblyPath]; + + if (sbVersion is not null && + msftVersion is not null && + sbVersion >= msftVersion && + Utilities.IsFileExcluded(assemblyPath, assemblyVersionDiffFilters)) + { + sbSdkAssemblyVersions.Remove(assemblyPath); + msftSdkAssemblyVersions.Remove(assemblyPath); + } + } + } + + private static void WriteAssemblyVersionsToFile(Dictionary assemblyVersions, string outputPath) + { + string[] lines = assemblyVersions + .Select(kvp => $"{kvp.Key} - {kvp.Value}") + .Order() + .ToArray(); + File.WriteAllLines(outputPath, lines); + } + + // It's known that assembly versions can be different between builds in their revision field. Disregard that difference + // by excluding that field in the output. + private static Version? GetVersion(AssemblyName assemblyName) + { + if (assemblyName.Version is not null) + { + return new Version(assemblyName.Version.ToString(3)); + } + + return null; + } + + private string FindMatchingFilePath(string rootDir, Matcher matcher, string representativeFile) + { + foreach (string file in Directory.EnumerateFiles(rootDir, "*", SearchOption.AllDirectories)) + { + if (matcher.Match(rootDir, file).HasMatches) + { + return file; + } + } + + Assert.Fail($"Unable to find matching file for '{representativeFile}' in '{rootDir}'."); + return string.Empty; + } + + private Dictionary GetSdkAssemblyVersions(string sbSdkPath) + { + Exclusions ex = new Exclusions(); + IEnumerable exclusionFilters = GetSdkDiffExclusionFilters(SourceBuildSdkType) + .Concat(GetKnownNativeFiles()) + .Select(filter => filter.TrimStart("./".ToCharArray())); + List knownNativeFiles = Utilities.ParseExclusionsFile("NativeDlls-win-any.txt").ToList(); + ConcurrentDictionary sbSdkAssemblyVersions = new(); + List tasks = new List(); + foreach (string dir in Directory.EnumerateDirectories(sbSdkPath, "*", SearchOption.AllDirectories).Append(sbSdkPath)) + { + var t = Task.Run(() => + { + foreach (string file in Directory.EnumerateFiles(dir, "*", SearchOption.TopDirectoryOnly)) + { + string fileExt = Path.GetExtension(file); + if (fileExt.Equals(".dll", StringComparison.OrdinalIgnoreCase) || + fileExt.Equals(".exe", StringComparison.OrdinalIgnoreCase)) + { + string relativePath = Path.GetRelativePath(sbSdkPath, file); + string normalizedPath = BaselineHelper.RemoveVersions(relativePath); + if (!Utilities.IsFileExcluded(normalizedPath, exclusionFilters)) + { + try + { + AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); + Assert.True(sbSdkAssemblyVersions.TryAdd(normalizedPath, GetVersion(assemblyName))); + } + catch (BadImageFormatException) + { + Console.WriteLine($"BadImageFormatException: {file}"); + } + } + } + } + }); + tasks.Add(t); + } + //foreach (string file in Directory.EnumerateFiles(sbSdkPath, "*", SearchOption.AllDirectories)) + //{ + // string fileExt = Path.GetExtension(file); + // if (fileExt.Equals(".dll", StringComparison.OrdinalIgnoreCase) || + // fileExt.Equals(".exe", StringComparison.OrdinalIgnoreCase)) + // { + // string relativePath = Path.GetRelativePath(sbSdkPath, file); + // string normalizedPath = BaselineHelper.RemoveVersions(relativePath); + // if (!Utilities.IsFileExcluded(normalizedPath, exclusionFilters)) + // { + // var t = Task.Run(() => + // { + // try + // { + // AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); + // sbSdkAssemblyVersions.Add(normalizedPath, GetVersion(assemblyName)); + // } + // catch (BadImageFormatException) + // { + // Console.WriteLine($"BadImageFormatException: {file}"); + // } + // }); + // tasks.Add(t); + // } + // } + //} + Task.WaitAll(tasks.ToArray()); + return sbSdkAssemblyVersions.ToDictionary(); + } + + private void WriteTarballFileList(string? tarballPath, string outputFileName, bool isPortable, string sdkType) + { + if (!File.Exists(tarballPath)) + { + throw new InvalidOperationException($"Tarball path '{tarballPath}' does not exist."); + } + + string fileListing = Utilities.GetTarballContentNames(tarballPath).Aggregate((a, b) => $"{a}{Environment.NewLine}{b}"); + fileListing = BaselineHelper.RemoveRids(fileListing, isPortable); + fileListing = BaselineHelper.RemoveVersions(fileListing); + IEnumerable files = fileListing.Split(Environment.NewLine).OrderBy(path => path); + files = RemoveExclusions(files, GetSdkDiffExclusionFilters(sdkType)); + + File.WriteAllLines(outputFileName, files); + } + + private static IEnumerable RemoveExclusions(IEnumerable files, IEnumerable exclusions) => + files.Where(item => !Utilities.IsFileExcluded(item, exclusions)); + + private static IEnumerable GetSdkDiffExclusionFilters(string sdkType) => + Utilities.ParseExclusionsFile("SdkFileDiffExclusions.txt", sdkType); + + private static IEnumerable GetSdkAssemblyVersionDiffExclusionFilters() => + Utilities.ParseExclusionsFile("SdkAssemblyVersionDiffExclusions.txt"); + + private static IEnumerable GetKnownNativeFiles() => + Utilities.ParseExclusionsFile("NativeDlls-win-any.txt"); + + private static string RemoveDiffMarkers(string source) + { + Regex indexRegex = new("^index .*", RegexOptions.Multiline); + string result = indexRegex.Replace(source, "index ------------"); + + Regex diffSegmentRegex = new("^@@ .* @@", RegexOptions.Multiline); + return diffSegmentRegex.Replace(result, "@@ ------------ @@"); + } +} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkTests.cs new file mode 100644 index 000000000000..ba3381360ffa --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkTests.cs @@ -0,0 +1,20 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Xunit.Abstractions; + +namespace Microsoft.DotNet.SourceBuild.SmokeTests; + +/// +/// Shared base class for all SDK-based smoke tests. +/// +public abstract class SdkTests : TestBase +{ + internal DotNetHelper DotNetHelper { get; } + + protected SdkTests(ITestOutputHelper outputHelper) : base(outputHelper) + { + DotNetHelper = new DotNetHelper(outputHelper); + } +} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SkippableFactAttribute.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SkippableFactAttribute.cs new file mode 100644 index 000000000000..c1314e19e8b5 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SkippableFactAttribute.cs @@ -0,0 +1,53 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Linq; +using Xunit; + +namespace Microsoft.DotNet.SourceBuild.SmokeTests; + +/// +/// A Fact that will be skipped based on the specified environment variable's value. +/// +internal class SkippableFactAttribute : FactAttribute +{ + public SkippableFactAttribute(string envName, bool skipOnNullOrWhiteSpaceEnv = false, bool skipOnTrueEnv = false, bool skipOnFalseEnv = false, string[] skipArchitectures = null) => + EvaluateSkips(skipOnNullOrWhiteSpaceEnv, skipOnTrueEnv, skipOnFalseEnv, skipArchitectures, (skip) => Skip = skip, envName); + + public SkippableFactAttribute(string[] envNames, bool skipOnNullOrWhiteSpaceEnv = false, bool skipOnTrueEnv = false, bool skipOnFalseEnv = false, string[] skipArchitectures = null) => + EvaluateSkips(skipOnNullOrWhiteSpaceEnv, skipOnTrueEnv, skipOnFalseEnv, skipArchitectures, (skip) => Skip = skip, envNames); + + public static void EvaluateSkips(bool skipOnNullOrWhiteSpaceEnv, bool skipOnTrueEnv, bool skipOnFalseEnv, string[] skipArchitectures, Action setSkip, params string[] envNames) + { + foreach (string envName in envNames) + { + string? envValue = Environment.GetEnvironmentVariable(envName); + + if (skipOnNullOrWhiteSpaceEnv && string.IsNullOrWhiteSpace(envValue)) + { + setSkip($"Skipping because `{envName}` is null or whitespace"); + break; + } + else if (skipOnTrueEnv && bool.TryParse(envValue, out bool boolValue) && boolValue) + { + setSkip($"Skipping because `{envName}` is set to True"); + break; + } + else if (skipOnFalseEnv && (!bool.TryParse(envValue, out boolValue) || !boolValue)) + { + setSkip($"Skipping because `{envName}` is set to False or an invalid value"); + break; + } + } + + if (skipArchitectures != null) { + string? arch = Config.TargetArchitecture; + if (skipArchitectures.Contains(arch)) + { + setSkip($"Skipping because arch is `{arch}`"); + } + } + } +} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/TestBase.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/TestBase.cs new file mode 100644 index 000000000000..963f07109303 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/TestBase.cs @@ -0,0 +1,25 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.IO; +using Xunit.Abstractions; + +namespace Microsoft.DotNet.SourceBuild.SmokeTests; + +public abstract class TestBase +{ + public static string LogsDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), "logs"); + + public ITestOutputHelper OutputHelper { get; } + + public TestBase(ITestOutputHelper outputHelper) + { + OutputHelper = outputHelper; + + if (!Directory.Exists(LogsDirectory)) + { + Directory.CreateDirectory(LogsDirectory); + } + } +} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Utilities.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Utilities.cs new file mode 100644 index 000000000000..54939d8355f4 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Utilities.cs @@ -0,0 +1,222 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Microsoft.Extensions.FileSystemGlobbing; +using System; +using System.Collections.Generic; +using System.Formats.Tar; +using System.IO; +using System.IO.Compression; +using System.IO.Enumeration; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Xunit; +using Xunit.Abstractions; + +namespace Microsoft.DotNet.SourceBuild.SmokeTests; + +public static class Utilities +{ + /// + /// Returns whether the given file path is excluded by the given exclusions using glob file matching. + /// + public static bool IsFileExcluded(string filePath, IEnumerable exclusions) => + GetMatchingFileExclusions(filePath.Replace('\\', '/'), exclusions, exclusion => exclusion).Any(); + + public static IEnumerable GetMatchingFileExclusions(string filePath, IEnumerable exclusions, Func getExclusionExpression) => + exclusions.Where(exclusion => FileSystemName.MatchesSimpleExpression(getExclusionExpression(exclusion), filePath)); + + /// + /// Parses a common file format in the test suite for listing file exclusions. + /// + /// Name of the exclusions file. + /// When specified, filters the exclusions to those that begin with the prefix value. + public static IEnumerable ParseExclusionsFile(string exclusionsFileName, string? prefix = null) + { + string exclusionsFilePath = Path.Combine(BaselineHelper.GetAssetsDirectory(), exclusionsFileName); + int prefixSkip = prefix?.Length + 1 ?? 0; + return File.ReadAllLines(exclusionsFilePath) + // process only specific exclusions if a prefix is provided + .Where(line => prefix is null || line.StartsWith(prefix + ",")) + .Select(line => + { + // Ignore comments + var index = line.IndexOf('#'); + return index >= 0 ? line[prefixSkip..index].TrimEnd() : line[prefixSkip..]; + }) + .Where(line => !string.IsNullOrEmpty(line)) + .ToList(); + } + + public static IEnumerable TryParseExclusionsFile(string exclusionsFileName, string? prefix = null) + { + string exclusionsFilePath = Path.Combine(BaselineHelper.GetAssetsDirectory(), exclusionsFileName); + int prefixSkip = prefix?.Length + 1 ?? 0; + if (!File.Exists(exclusionsFilePath)) + { + return []; + } + return File.ReadAllLines(exclusionsFilePath) + // process only specific exclusions if a prefix is provided + .Where(line => prefix is null || line.StartsWith(prefix + ",")) + .Select(line => + { + // Ignore comments + var index = line.IndexOf('#'); + return index >= 0 ? line[prefixSkip..index].TrimEnd() : line[prefixSkip..]; + }) + .Where(line => !string.IsNullOrEmpty(line)) + .ToList(); + } + + public static void ExtractTarball(string tarballPath, string outputDir, ITestOutputHelper outputHelper) + { + // TarFile doesn't properly handle hard links (https://github.com/dotnet/runtime/pull/85378#discussion_r1221817490), + // use 'tar' instead. + if (tarballPath.EndsWith(".tar.gz", StringComparison.OrdinalIgnoreCase) || tarballPath.EndsWith(".tgz", StringComparison.OrdinalIgnoreCase)) + { + ExecuteHelper.ExecuteProcessValidateExitCode("tar", $"xzf {tarballPath} -C {outputDir}", outputHelper); + } + else if (tarballPath.EndsWith(".zip")) + { + ZipFile.ExtractToDirectory(tarballPath, outputDir); + } + else + { + throw new InvalidOperationException($"Unsupported tarball format: {tarballPath}"); + } + } + + public static void ExtractTarball(string tarballPath, string outputDir, string targetFilePath) + { + Matcher matcher = new(); + matcher.AddInclude(targetFilePath); + + using FileStream fileStream = File.OpenRead(tarballPath); + using GZipStream decompressorStream = new(fileStream, CompressionMode.Decompress); + using TarReader reader = new(decompressorStream); + + TarEntry entry; + while ((entry = reader.GetNextEntry()) is not null) + { + if (matcher.Match(entry.Name).HasMatches) + { + string outputPath = Path.Join(outputDir, entry.Name); + Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); + + using FileStream outputFileStream = File.Create(outputPath); + entry.DataStream.CopyTo(outputFileStream); + break; + } + } + } + + public static IEnumerable GetTarballContentNames(string tarballPath) + { + if (tarballPath.EndsWith(".zip")) + { + using ZipArchive zip = ZipFile.OpenRead(tarballPath); + foreach (ZipArchiveEntry entry in zip.Entries) + { + yield return entry.FullName; + } + yield break; + } + else if (tarballPath.EndsWith(".tar.gz") || tarballPath.EndsWith(".tgz")) + { + using FileStream fileStream = File.OpenRead(tarballPath); + using GZipStream decompressorStream = new(fileStream, CompressionMode.Decompress); + using TarReader reader = new(decompressorStream); + + TarEntry entry; + while ((entry = reader.GetNextEntry()) is not null) + { + yield return entry.Name; + } + } + } + + public static void ExtractNupkg(string package, string outputDir) + { + Directory.CreateDirectory(outputDir); + + using ZipArchive zip = ZipFile.OpenRead(package); + foreach (ZipArchiveEntry entry in zip.Entries) + { + string outputPath = Path.Combine(outputDir, entry.FullName); + Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); + entry.ExtractToFile(outputPath); + } + } + + public static async Task RetryAsync(Func executor, ITestOutputHelper outputHelper) + { + await Utilities.RetryAsync( + async () => + { + try + { + await executor(); + return null; + } + catch (Exception e) + { + return e; + } + }, + outputHelper); + } + + private static async Task RetryAsync(Func> executor, ITestOutputHelper outputHelper) + { + const int maxRetries = 5; + const int waitFactor = 5; + + int retryCount = 0; + + Exception? exception = await executor(); + while (exception != null) + { + retryCount++; + if (retryCount >= maxRetries) + { + throw new InvalidOperationException($"Failed after {retryCount} retries.", exception); + } + + int waitTime = Convert.ToInt32(Math.Pow(waitFactor, retryCount - 1)); + if (outputHelper != null) + { + outputHelper.WriteLine($"Retry {retryCount}/{maxRetries}, retrying in {waitTime} seconds..."); + } + + Thread.Sleep(TimeSpan.FromSeconds(waitTime)); + exception = await executor(); + } + } + + public static void LogWarningMessage(this ITestOutputHelper outputHelper, string message) + { + string prefix = "##vso[task.logissue type=warning;]"; + + outputHelper.WriteLine($"{Environment.NewLine}{prefix}{message}.{Environment.NewLine}"); + outputHelper.WriteLine("##vso[task.complete result=SucceededWithIssues;]"); + } + + public static void ValidateNotNullOrWhiteSpace(string? variable, string variableName) + { + if (string.IsNullOrWhiteSpace(variable)) + { + throw new ArgumentException($"{variableName} is null, empty, or whitespace."); + } + } + + public static string GetFile(string path, string pattern) + { + string[] files = Directory.GetFiles(path, pattern, SearchOption.AllDirectories); + Assert.False(files.Length > 1, $"Found multiple files matching the pattern {pattern}: {Environment.NewLine}{string.Join(Environment.NewLine, files)}"); + Assert.False(files.Length == 0, $"Did not find any files matching the pattern {pattern}"); + return files[0]; + } +} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-any.txt b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-any.txt new file mode 100644 index 000000000000..9e8e6088e2e0 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-any.txt @@ -0,0 +1,49 @@ +# Contains the list of files which are .dll's or .exe's but are not managed assemblies and should not have their assembly version checked +# +# This list is processed using FileSystemName.MatchesSimpleExpression +# +# Examples +# 'folder/*' matches 'folder/' and 'folder/abc' +# 'folder/?*' matches 'folder/abc' but not 'folder/' +# +# We do not want to filter-out folder entries, therefore, we should use: '?*' and not just '*' + + +./sdk/x.y.z/AppHostTemplate/apphost.exe +./host/fxr/x.y.z/hostfxr.dll +./shared/Microsoft.AspNetCore.App/x.y.z/aspnetcorev2_inprocess.dll +./shared/Microsoft.WindowsDesktop.App/x.y.z/D3DCompiler_47_cor3.dll +./shared/Microsoft.NETCore.App/x.y.z/clretwrc.dll +./shared/Microsoft.NETCore.App/x.y.z/clrgc.dll +./shared/Microsoft.WindowsDesktop.App/x.y.z/PenImc_cor3.dll +./shared/Microsoft.WindowsDesktop.App/x.y.z/PresentationNative_cor3.dll +./shared/Microsoft.NETCore.App/x.y.z/clrgcexp.dll +./shared/Microsoft.NETCore.App/x.y.z/clrjit.dll +./shared/Microsoft.WindowsDesktop.App/x.y.z/vcruntime140_cor3.dll +./shared/Microsoft.NETCore.App/x.y.z/coreclr.dll +./shared/Microsoft.NETCore.App/x.y.z/createdump.exe +./shared/Microsoft.WindowsDesktop.App/x.y.z/wpfgfx_cor3.dll +./shared/Microsoft.NETCore.App/x.y.z/hostpolicy.dll +./shared/Microsoft.NETCore.App/x.y.z/Microsoft.DiaSymReader.Native.amd64.dll +./shared/Microsoft.NETCore.App/x.y.z/mscordaccore.dll +./shared/Microsoft.NETCore.App/x.y.z/mscordaccore_amd64_amd64_x.y.z.dll +./shared/Microsoft.NETCore.App/x.y.z/mscordbi.dll +./shared/Microsoft.NETCore.App/x.y.z/mscorrc.dll +./shared/Microsoft.NETCore.App/x.y.z/msquic.dll +./packs/Microsoft.NETCore.App.Host.win-x64/x.y.z/runtimes/win-x64/native/apphost.exe +./packs/Microsoft.NETCore.App.Host.win-x86/x.y.z/runtimes/win-x86/native/apphost.exe +./packs/Microsoft.NETCore.App.Host.win-arm64/x.y.z/runtimes/win-arm64/native/apphost.exe +./packs/Microsoft.NETCore.App.Host.win-x64/x.y.z/runtimes/win-x64/native/comhost.dll +./packs/Microsoft.NETCore.App.Host.win-x86/x.y.z/runtimes/win-x86/native/comhost.dll +./packs/Microsoft.NETCore.App.Host.win-arm64/x.y.z/runtimes/win-arm64/native/comhost.dll +./packs/Microsoft.NETCore.App.Host.win-x64/x.y.z/runtimes/win-x64/native/ijwhost.dll +./packs/Microsoft.NETCore.App.Host.win-x86/x.y.z/runtimes/win-x86/native/ijwhost.dll +./packs/Microsoft.NETCore.App.Host.win-arm64/x.y.z/runtimes/win-arm64/native/ijwhost.dll +./packs/Microsoft.NETCore.App.Host.win-x64/x.y.z/runtimes/win-x64/native/nethost.dll +./packs/Microsoft.NETCore.App.Host.win-x86/x.y.z/runtimes/win-x86/native/nethost.dll +./packs/Microsoft.NETCore.App.Host.win-arm64/x.y.z/runtimes/win-arm64/native/nethost.dll +./packs/Microsoft.NETCore.App.Host.win-x64/x.y.z/runtimes/win-x64/native/singlefilehost.exe +./packs/Microsoft.NETCore.App.Host.win-x86/x.y.z/runtimes/win-x86/native/singlefilehost.exe +./packs/Microsoft.NETCore.App.Host.win-arm64/x.y.z/runtimes/win-arm64/native/singlefilehost.exe +./shared/Microsoft.NETCore.App/x.y.z/System.IO.Compression.Native.dll +./dotnet.exe \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-x64.txt b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-x64.txt new file mode 100644 index 000000000000..e93e1d37bdaa --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-x64.txt @@ -0,0 +1,14 @@ +# Contains the list of files whose assembly versions are to be excluded from comparison between the MSFT & SB SDK. +# These exclusions only take effect if the assembly version of the file in the SB SDK is equal to or greater than +# the version in the MSFT SDK. If the version is less, the file will show up in the results as this is not a scenario +# that is valid for shipping. +# +# This list is processed using FileSystemName.MatchesSimpleExpression +# +# Examples +# 'folder/*' matches 'folder/' and 'folder/abc' +# 'folder/?*' matches 'folder/abc' but not 'folder/' +# +# We do not want to filter-out folder entries, therefore, we should use: '?*' and not just '*' + +./shared/Microsoft.NETCore.App/x.y.z/mscordaccore_amd64_amd64_x.y.z.dll \ No newline at end of file diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls.txt b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls.txt new file mode 100644 index 000000000000..1b5390e2a754 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls.txt @@ -0,0 +1,16 @@ +# Contains the list of files whose assembly versions are to be excluded from comparison between the MSFT & SB SDK. +# These exclusions only take effect if the assembly version of the file in the SB SDK is equal to or greater than +# the version in the MSFT SDK. If the version is less, the file will show up in the results as this is not a scenario +# that is valid for shipping. +# +# This list is processed using FileSystemName.MatchesSimpleExpression +# +# Examples +# 'folder/*' matches 'folder/' and 'folder/abc' +# 'folder/?*' matches 'folder/abc' but not 'folder/' +# +# We do not want to filter-out folder entries, therefore, we should use: '?*' and not just '*' + +./sdk/x.y.z/TestHostNetFramework/x64/msdia140.dll +./sdk/x.y.z/TestHostNetFramework/x86/msdia140.dll +./sdk/x.y.z/datacollector.dll diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkAssemblyVersionDiffExclusions.txt b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkAssemblyVersionDiffExclusions.txt index 1b5390e2a754..e5b0530164f9 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkAssemblyVersionDiffExclusions.txt +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkAssemblyVersionDiffExclusions.txt @@ -11,6 +11,3 @@ # # We do not want to filter-out folder entries, therefore, we should use: '?*' and not just '*' -./sdk/x.y.z/TestHostNetFramework/x64/msdia140.dll -./sdk/x.y.z/TestHostNetFramework/x86/msdia140.dll -./sdk/x.y.z/datacollector.dll diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-linux-x64.diff similarity index 100% rename from src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles.diff rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-linux-x64.diff diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-win-x64.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-win-x64.diff new file mode 100644 index 000000000000..e69de29bb2d1 From b1dfb7a0e4b5464ae96a03f85228729511ce3710 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Mon, 18 Mar 2024 16:41:47 -0700 Subject: [PATCH 04/41] Remove old PackageDiff and reference test runner in installer.proj --- .../PackageDiff.Tasks.csproj | 31 ---- .../PackageDiff.Tasks/PackageDiff.cs | 28 --- .../build/PackageDiff.Tasks.props | 9 - .../PackageDiff/PackageDiff.csproj | 11 -- .../tasks/PackageDiff/PackageDiff/Program.cs | 160 ------------------ .../PackageDiff/PackageDiff/ZipExtensions.cs | 60 ------- .../content/repo-projects/installer.proj | 1 + 7 files changed, 1 insertion(+), 299 deletions(-) delete mode 100644 src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.Tasks.csproj delete mode 100644 src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.cs delete mode 100644 src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/build/PackageDiff.Tasks.props delete mode 100644 src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/PackageDiff.csproj delete mode 100644 src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/Program.cs delete mode 100644 src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/ZipExtensions.cs diff --git a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.Tasks.csproj b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.Tasks.csproj deleted file mode 100644 index 878b136beb7a..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.Tasks.csproj +++ /dev/null @@ -1,31 +0,0 @@ - - - - Library - netstandard2.0 - enable - enable - true - true - $(NoWarn);NU5128;NU5129;NU5100 - tasks - true - - - - - - - - - - - - <_DiffToolPublishContent Include="$(OutputPath)PackageDiff\**" /> - - - - - diff --git a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.cs b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.cs deleted file mode 100644 index 744779ccee8d..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/PackageDiff.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.Build.Framework; - -public class PackageDiff: Microsoft.Build.Utilities.ToolTask -{ - [Required] - public string BaselinePackage {get; set;} = ""; - - [Required] - public string TestPackage {get; set;} = ""; - - protected override string ToolName { get; } = $"PackageDiff" + (System.Environment.OSVersion.Platform == PlatformID.Unix ? "" : ".exe"); - - protected override MessageImportance StandardOutputLoggingImportance => MessageImportance.High; - protected override bool HandleTaskExecutionErrors() => true; - - protected override string GenerateFullPathToTool() - { - return Path.Combine(Path.GetDirectoryName(typeof(PackageDiff).Assembly.Location)!, "..", "..", "tools", ToolName); - } - - protected override string GenerateCommandLineCommands() - { - return $"\"{BaselinePackage}\" \"{TestPackage}\""; - } -} diff --git a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/build/PackageDiff.Tasks.props b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/build/PackageDiff.Tasks.props deleted file mode 100644 index 239643148ec2..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff.Tasks/build/PackageDiff.Tasks.props +++ /dev/null @@ -1,9 +0,0 @@ - - - - <_PackageDiffTasksAssemblyPath>$(MSBuildThisFileDirectory)\..\tasks\netstandard2.0\PackageDiff.Tasks.dll - - - - - diff --git a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/PackageDiff.csproj b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/PackageDiff.csproj deleted file mode 100644 index c74b0b783484..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/PackageDiff.csproj +++ /dev/null @@ -1,11 +0,0 @@ - - - - Exe - net9.0 - enable - true - true - - - diff --git a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/Program.cs b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/Program.cs deleted file mode 100644 index 924c0aba6451..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/Program.cs +++ /dev/null @@ -1,160 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.IO; -using System.IO.Compression; -using System.Linq; -using System.Net.Http; -using System.Reflection; -using System.Reflection.Metadata; -using System.Reflection.PortableExecutable; -using System.Text; -using System.Threading.Tasks; - -public class PackageDiff -{ - public static async Task Main(string[] args) - { - if (args.Length != 2) - { - Console.WriteLine("Usage: PackageDiff "); - return 1; - } - - ZipArchive package1 = await GetZipArchiveAsync(args[0]); - ZipArchive package2 = await GetZipArchiveAsync(args[1]); - var diff = GetDiffs(package1, package2); - if (diff is not "") - { - Console.WriteLine(diff); - return 1; - } - return 0; - } - - public static async Task GetZipArchiveAsync(string arg) - { - if (File.Exists(arg)) - { - return new ZipArchive(File.OpenRead(arg)); - } - else if (Uri.TryCreate(arg, UriKind.RelativeOrAbsolute, out var uri)) - { - var webClient = new HttpClient(); - return new ZipArchive(await webClient.GetStreamAsync(uri)); - } - else - { - throw new ArgumentException($"Invalid path or url to package1: {arg}"); - } - } - - public static string GetDiffs(ZipArchive package1, ZipArchive package2) - { - StringBuilder output = new(); - - if (TryGetDiff(package1.Entries.Select(entry => entry.FullName).ToList(), package2.Entries.Select(entry => entry.FullName).ToList(), out var fileDiffs)) - { - output.AppendLine("File differences:"); - output.AppendLine(string.Join(Environment.NewLine, fileDiffs.Select(d => " " + d))); - output.AppendLine(); - } - - if (TryGetDiff(package1.GetNuspec().Lines(), package2.GetNuspec().Lines(), out var editedDiff)) - { - output.AppendLine("Nuspec differences:"); - output.AppendLine(string.Join(Environment.NewLine, editedDiff.Select(d => " " + d))); - output.AppendLine(); - } - var dlls1 = package1.Entries.Where(entry => entry.FullName.EndsWith(".dll")).ToImmutableDictionary(entry => entry.FullName, entry => entry); - var dlls2 = package2.Entries.Where(entry => entry.FullName.EndsWith(".dll")).ToImmutableDictionary(entry => entry.FullName, entry => entry); - foreach (var kvp in dlls1) - { - var dllPath = kvp.Key; - var dll1 = kvp.Value; - if (dlls2.TryGetValue(dllPath, out ZipArchiveEntry? dll2)) - { - try - { - var version1 = new PEReader(dll1.Open().ReadToEnd().ToImmutableArray()).GetMetadataReader().GetAssemblyDefinition().Version.ToString(); - var version2 = new PEReader(dll2.Open().ReadToEnd().ToImmutableArray()).GetMetadataReader().GetAssemblyDefinition().Version.ToString(); - if (version1 != version2) - { - output.AppendLine($"Assembly {dllPath} has different versions: {version1} and {version2}"); - } - } - catch (InvalidOperationException) - { } - } - } - return output.ToString(); - } - - public static bool TryGetDiff(List originalLines, List modifiedLines, out List formattedDiff) - { - // Edit distance algorithm: https://en.wikipedia.org/wiki/Longest_common_subsequence - - int[,] dp = new int[originalLines.Count + 1, modifiedLines.Count + 1]; - - // Initialize first row and column - for (int i = 0; i <= originalLines.Count; i++) - { - dp[i, 0] = i; - } - for (int j = 0; j <= modifiedLines.Count; j++) - { - dp[0, j] = j; - } - - // Compute edit distance - for (int i = 1; i <= originalLines.Count; i++) - { - for (int j = 1; j <= modifiedLines.Count; j++) - { - if (string.Compare(originalLines[i - 1], modifiedLines[j - 1]) == 0) - { - dp[i, j] = dp[i - 1, j - 1]; - } - else - { - dp[i, j] = 1 + Math.Min(dp[i - 1, j], dp[i, j - 1]); - } - } - } - - // Trace back the edits - int row = originalLines.Count; - int col = modifiedLines.Count; - - formattedDiff = []; - while (row > 0 || col > 0) - { - if (row > 0 && col > 0 && string.Compare(originalLines[row - 1], modifiedLines[col - 1]) == 0) - { - formattedDiff.Add(" " + originalLines[row - 1]); - row--; - col--; - } - else if (col > 0 && (row == 0 || dp[row, col - 1] <= dp[row - 1, col])) - { - formattedDiff.Add("+ " + modifiedLines[col - 1]); - col--; - } - else if (row > 0 && (col == 0 || dp[row, col - 1] > dp[row - 1, col])) - { - formattedDiff.Add("- " + originalLines[row - 1]); - row--; - } - else - { - throw new Exception("Unreachable code"); - } - } - formattedDiff.Reverse(); - return dp[originalLines.Count, modifiedLines.Count] != 0; - } - -} diff --git a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/ZipExtensions.cs b/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/ZipExtensions.cs deleted file mode 100644 index 914740b06867..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/PackageDiff/PackageDiff/ZipExtensions.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using System.Linq; -using System.Text; - -static class ZipExtensions -{ - public static List Lines(this ZipArchiveEntry entry, Encoding? encoding = null) - { - return entry.ReadToString(encoding).Replace("\r\n", "\n").Split('\n').ToList(); - } - - public static string ReadToString(this ZipArchiveEntry entry, Encoding? encoding = null) - { - Stream stream = entry.Open(); - byte[] buffer = stream.ReadToEnd(); - // Remove UTF-8 BOM if present - int index = 0; - if (buffer[0] == 0xEF && buffer[1] == 0xBB && buffer[2] == 0xBF) - { - index = 3; - } - encoding ??= Encoding.UTF8; - string fileText = encoding.GetString(buffer, index, buffer.Length - index); - return fileText; - } - - public static ZipArchiveEntry GetNuspec(this ZipArchive package) - { - return package.Entries.Where(entry => entry.FullName.EndsWith(".nuspec")).Single(); - } - - public static byte[] ReadToEnd(this Stream stream) - { - int bufferSize = 2048; - byte[] buffer = new byte[bufferSize]; - int offset = 0; - while (true) - { - int bytesRead = stream.Read(buffer, offset, bufferSize - offset); - offset += bytesRead; - if (bytesRead == 0) - { - break; - } - if (offset == bufferSize) - { - Array.Resize(ref buffer, bufferSize * 2); - bufferSize *= 2; - } - } - Array.Resize(ref buffer, offset); - return buffer; - } -} diff --git a/src/SourceBuild/content/repo-projects/installer.proj b/src/SourceBuild/content/repo-projects/installer.proj index e834755ea1e2..4b683e559303 100644 --- a/src/SourceBuild/content/repo-projects/installer.proj +++ b/src/SourceBuild/content/repo-projects/installer.proj @@ -149,5 +149,6 @@ + From cdbd8e5b3ff7e69a85ac9570cfcf43f8ceca6390 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Tue, 19 Mar 2024 09:52:54 -0700 Subject: [PATCH 05/41] Fix capilization issue with file name --- ...fiedBuildvalidation.targets => unifiedBuildValidation.targets} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/SourceBuild/content/eng/{unifiedBuildvalidation.targets => unifiedBuildValidation.targets} (100%) diff --git a/src/SourceBuild/content/eng/unifiedBuildvalidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets similarity index 100% rename from src/SourceBuild/content/eng/unifiedBuildvalidation.targets rename to src/SourceBuild/content/eng/unifiedBuildValidation.targets From 46cc050d54b3b7a19a42c001f823bfef093eb4b2 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Tue, 19 Mar 2024 09:54:36 -0700 Subject: [PATCH 06/41] Revert changes from existing smoke tests --- .../BaselineHelper.cs | 6 +- .../DotNetHelper.cs | 24 +-- .../SdkContentTests.cs | 105 +++------- .../Utilities.cs | 2 +- .../assets/SdkFileDiffExclusions.txt | 4 - .../baselines/ArtifactsSizes/centos.8-x64.txt | 40 ++-- .../assets/baselines/MsftToSbSdkFiles.diff | 189 ++++++++++++++++++ 7 files changed, 259 insertions(+), 111 deletions(-) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/BaselineHelper.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/BaselineHelper.cs index a5ca6a154033..6b7c6f71a50f 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/BaselineHelper.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/BaselineHelper.cs @@ -96,7 +96,7 @@ public static string RemoveRids(string diff, bool isPortable = false) => public static string RemoveVersions(string source) { // Remove version numbers for examples like "roslyn4.1", "net8.0", and "netstandard2.1". - string pathSeparator = $"[{Regex.Escape(@"\")}|{Regex.Escape(@"/")}]"; + string pathSeparator = Regex.Escape(Path.DirectorySeparatorChar.ToString()); string result = Regex.Replace(source, $@"{pathSeparator}(net|roslyn)[1-9]+\.[0-9]+{pathSeparator}", match => { string wordPart = match.Groups[1].Value; @@ -111,10 +111,10 @@ public static string RemoveVersions(string source) // - The version may have one or more release identifiers that begin with '.' or '-' // - The version should end before a path separator, '.', '-', or '/' Regex semanticVersionRegex = new( - @"(?<=[./\\-])(0|[1-9]\d*)\.(0|[1-9]\d*)(\.(0|[1-9]\d*))+" + @"(?<=[./-])(0|[1-9]\d*)\.(0|[1-9]\d*)(\.(0|[1-9]\d*))+" + @"(((?:[-.]((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)))+" + @"(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?" - + @"(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?(?=[/\\.-])"); + + @"(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?(?=[/.-])"); return semanticVersionRegex.Replace(result, SemanticVersionPlaceholder); } diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetHelper.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetHelper.cs index c662eaf7647b..291d492ed1a8 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetHelper.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetHelper.cs @@ -43,16 +43,16 @@ public DotNetHelper(ITestOutputHelper outputHelper) } IsMonoRuntime = DetermineIsMonoRuntime(Config.DotNetDirectory); - // if (!Directory.Exists(ProjectsDirectory)) - // { - // Directory.CreateDirectory(ProjectsDirectory); - // InitNugetConfig(); - // } - - // if (!Directory.Exists(PackagesDirectory)) - // { - // Directory.CreateDirectory(PackagesDirectory); - // } + if (!Directory.Exists(ProjectsDirectory)) + { + Directory.CreateDirectory(ProjectsDirectory); + InitNugetConfig(); + } + + if (!Directory.Exists(PackagesDirectory)) + { + Directory.CreateDirectory(PackagesDirectory); + } } } @@ -105,7 +105,7 @@ public void ExecuteCmd(string args, string? workingDirectory = null, Action configureProcess(process, workingDirectory), millisecondTimeout: millisecondTimeout); - + if (expectedExitCode != null) { ExecuteHelper.ValidateExitCode(executeResult, (int) expectedExitCode); } @@ -243,7 +243,7 @@ private void ExecuteWeb(string projectName, string args, string workingDirectory { throw validator.ValidationException; } - } + } private static string GetBinLogOption(string projectName, string command, string? differentiator = null) { diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/SdkContentTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/SdkContentTests.cs index d78b2e8e4457..29bb7dbc55ca 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/SdkContentTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/SdkContentTests.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System; -using System.Collections.Concurrent; using System.Collections.Generic; using System.Data; using System.IO; @@ -11,7 +10,6 @@ using System.Linq; using System.Reflection; using System.Text.RegularExpressions; -using System.Threading.Tasks; using Microsoft.Extensions.FileSystemGlobbing; using Xunit; using Xunit.Abstractions; @@ -120,33 +118,27 @@ private static void WriteAssemblyVersionsToFile(Dictionary ass private Dictionary GetMsftSdkAssemblyVersions( string msftSdkPath, Dictionary sbSdkAssemblyVersions) { - ConcurrentDictionary msftSdkAssemblyVersions = new(); - var tasks = new List(); + Dictionary msftSdkAssemblyVersions = new(); foreach ((string relativePath, _) in sbSdkAssemblyVersions) { - var t = Task.Run(() => - { - // Now we want to find the corresponding file that exists in the MSFT SDK. - // We've already replaced version numbers with placeholders in the path. - // So we can't directly use the relative path to find the corresponding file. Instead, - // we need to replace the version placeholders with wildcards and find the path through path matching. - string file = Path.Combine(msftSdkPath, relativePath); - Matcher matcher = BaselineHelper.GetFileMatcherFromPath(relativePath); + // Now we want to find the corresponding file that exists in the MSFT SDK. + // We've already replaced version numbers with placeholders in the path. + // So we can't directly use the relative path to find the corresponding file. Instead, + // we need to replace the version placeholders with wildcards and find the path through path matching. + string file = Path.Combine(msftSdkPath, relativePath); + Matcher matcher = BaselineHelper.GetFileMatcherFromPath(relativePath); - file = FindMatchingFilePath(msftSdkPath, matcher, relativePath); + file = FindMatchingFilePath(msftSdkPath, matcher, relativePath); - if (!File.Exists(file)) - { - return; - } + if (!File.Exists(file)) + { + continue; + } - AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); - Assert.True(msftSdkAssemblyVersions.TryAdd(BaselineHelper.RemoveVersions(relativePath), GetVersion(assemblyName))); - }); - tasks.Add(t); + AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); + msftSdkAssemblyVersions.Add(BaselineHelper.RemoveVersions(relativePath), GetVersion(assemblyName)); } - Task.WaitAll(tasks.ToArray()); - return msftSdkAssemblyVersions.ToDictionary(); + return msftSdkAssemblyVersions; } // It's known that assembly versions can be different between builds in their revision field. Disregard that difference @@ -179,65 +171,24 @@ private string FindMatchingFilePath(string rootDir, Matcher matcher, string repr { IEnumerable exclusionFilters = GetSdkDiffExclusionFilters(SourceBuildSdkType) .Select(filter => filter.TrimStart("./".ToCharArray())); - ConcurrentDictionary sbSdkAssemblyVersions = new(); - List tasks = new List(); - foreach (string dir in Directory.EnumerateDirectories(sbSdkPath, "*", SearchOption.AllDirectories).Append(sbSdkPath)) + Dictionary sbSdkAssemblyVersions = new(); + foreach (string file in Directory.EnumerateFiles(sbSdkPath, "*", SearchOption.AllDirectories)) { - var t = Task.Run(() => + string fileExt = Path.GetExtension(file); + if (fileExt.Equals(".dll", StringComparison.OrdinalIgnoreCase) || + fileExt.Equals(".exe", StringComparison.OrdinalIgnoreCase)) { - foreach (string file in Directory.EnumerateFiles(dir, "*", SearchOption.TopDirectoryOnly)) + AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); + string relativePath = Path.GetRelativePath(sbSdkPath, file); + string normalizedPath = BaselineHelper.RemoveVersions(relativePath); + + if (!Utilities.IsFileExcluded(normalizedPath, exclusionFilters)) { - string fileExt = Path.GetExtension(file); - if (fileExt.Equals(".dll", StringComparison.OrdinalIgnoreCase) || - fileExt.Equals(".exe", StringComparison.OrdinalIgnoreCase)) - { - string relativePath = Path.GetRelativePath(sbSdkPath, file); - string normalizedPath = BaselineHelper.RemoveVersions(relativePath); - if (!Utilities.IsFileExcluded(normalizedPath, exclusionFilters)) - { - try - { - AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); - Assert.True(sbSdkAssemblyVersions.TryAdd(normalizedPath, GetVersion(assemblyName))); - } - catch (BadImageFormatException) - { - Console.WriteLine($"BadImageFormatException: {file}"); - } - } - } + sbSdkAssemblyVersions.Add(normalizedPath, GetVersion(assemblyName)); } - }); - tasks.Add(t); + } } - //foreach (string file in Directory.EnumerateFiles(sbSdkPath, "*", SearchOption.AllDirectories)) - //{ - // string fileExt = Path.GetExtension(file); - // if (fileExt.Equals(".dll", StringComparison.OrdinalIgnoreCase) || - // fileExt.Equals(".exe", StringComparison.OrdinalIgnoreCase)) - // { - // string relativePath = Path.GetRelativePath(sbSdkPath, file); - // string normalizedPath = BaselineHelper.RemoveVersions(relativePath); - // if (!Utilities.IsFileExcluded(normalizedPath, exclusionFilters)) - // { - // var t = Task.Run(() => - // { - // try - // { - // AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); - // sbSdkAssemblyVersions.Add(normalizedPath, GetVersion(assemblyName)); - // } - // catch (BadImageFormatException) - // { - // Console.WriteLine($"BadImageFormatException: {file}"); - // } - // }); - // tasks.Add(t); - // } - // } - //} - Task.WaitAll(tasks.ToArray()); - return sbSdkAssemblyVersions.ToDictionary(); + return sbSdkAssemblyVersions; } private void WriteTarballFileList(string? tarballPath, string outputFileName, bool isPortable, string sdkType) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Utilities.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Utilities.cs index 55377b29a387..228a65a61e94 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Utilities.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Utilities.cs @@ -23,7 +23,7 @@ public static class Utilities /// Returns whether the given file path is excluded by the given exclusions using glob file matching. /// public static bool IsFileExcluded(string filePath, IEnumerable exclusions) => - GetMatchingFileExclusions(filePath.Replace('\\', '/'), exclusions, exclusion => exclusion).Any(); + GetMatchingFileExclusions(filePath, exclusions, exclusion => exclusion).Any(); public static IEnumerable GetMatchingFileExclusions(string filePath, IEnumerable exclusions, Func getExclusionExpression) => exclusions.Where(exclusion => FileSystemName.MatchesSimpleExpression(getExclusionExpression(exclusion), filePath)); diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkFileDiffExclusions.txt b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkFileDiffExclusions.txt index 45bf347ff158..338c94dcdae7 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkFileDiffExclusions.txt +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkFileDiffExclusions.txt @@ -89,7 +89,3 @@ sb,./sdk/x.y.z/*/Microsoft.TestPlatform.TestHostRuntimeProvider.resources.dll sb,./sdk/x.y.z/*/Microsoft.VisualStudio.TestPlatform.Extensions.Html.TestLogger.resources.dll sb,./sdk/x.y.z/*/Microsoft.VisualStudio.TestPlatform.Extensions.Trx.TestLogger.resources.dll msft,./sdk/x.y.z/Extensions/*/* - -# https://github.com/dotnet/source-build/issues/3510 -msft,./sdk/x.y.z/Containers/containerize/** -msft,./sdk/x.y.z/Containers/tasks/net472/** diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/ArtifactsSizes/centos.8-x64.txt b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/ArtifactsSizes/centos.8-x64.txt index 342b984b9a12..c31d1666326e 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/ArtifactsSizes/centos.8-x64.txt +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/ArtifactsSizes/centos.8-x64.txt @@ -14,7 +14,6 @@ host/fxr/x.y.z/libhostfxr.so: 4681016 Humanizer.Core.x.y.z.nupkg: 945071 LICENSE.txt: 1116 metadata/workloads/x.y.z/userlocal: 0 -Microsoft.ApplicationInsights.x.y.z-1.nupkg: 148627 Microsoft.ApplicationInsights.x.y.z.nupkg: 148568 Microsoft.Arcade.Common.x.y.z.nupkg: 57342 Microsoft.AspNetCore.Analyzers.x.y.z.nupkg: 17835 @@ -38,7 +37,7 @@ Microsoft.AspNetCore.Http.Connections.Common.x.y.z.nupkg: 21665 Microsoft.AspNetCore.Metadata.x.y.z.nupkg: 19582 Microsoft.AspNetCore.Mvc.Analyzers.x.y.z.nupkg: 20157 Microsoft.AspNetCore.Mvc.Api.Analyzers.x.y.z.nupkg: 28710 -Microsoft.AspNetCore.Mvc.Razor.Extensions.Tooling.Internal.x.y.z.nupkg: 446006 +Microsoft.AspNetCore.Mvc.Razor.Extensions.Tooling.Internal.x.y.z.nupkg: 94089 Microsoft.AspNetCore.SignalR.Common.x.y.z.nupkg: 31619 Microsoft.AspNetCore.SignalR.Protocols.Json.x.y.z.nupkg: 25486 Microsoft.AspNetCore.WebUtilities.x.y.z.nupkg: 60948 @@ -90,7 +89,7 @@ Microsoft.DiaSymReader.x.y.z-1.nupkg: 57796 Microsoft.DiaSymReader.x.y.z-2.nupkg: 57817 Microsoft.DiaSymReader.x.y.z.nupkg: 57811 Microsoft.DotNet.ApiCompat.Task.x.y.z.nupkg: 1280207 -Microsoft.DotNet.Arcade.Sdk.x.y.z.nupkg: 876107 +Microsoft.DotNet.Arcade.Sdk.x.y.z.nupkg: 605055 Microsoft.DotNet.Build.Tasks.Archives.x.y.z.nupkg: 11400 Microsoft.DotNet.Build.Tasks.Installers.x.y.z.nupkg: 104948 Microsoft.DotNet.Build.Tasks.Packaging.x.y.z.nupkg: 162274 @@ -112,7 +111,6 @@ Microsoft.DotNet.InternalAbstractions.x.y.z.nupkg: 10642 Microsoft.DotNet.MSBuildSdkResolver.x.y.z.nupkg: 114783 Microsoft.DotNet.NuGetRepack.Tasks.x.y.z.nupkg: 85406 Microsoft.DotNet.PackageTesting.x.y.z.nupkg: 37598 -Microsoft.DotNet.ScenarioTests.SdkTemplateTests.x.y.z.nupkg: 721284 Microsoft.DotNet.SharedFramework.Sdk.x.y.z.nupkg: 89834 Microsoft.DotNet.SignTool.x.y.z.nupkg: 212432 Microsoft.DotNet.SourceBuild.Tasks.x.y.z.nupkg: 46762 @@ -208,7 +206,6 @@ Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver.x.y.z.nupkg: 14414 Microsoft.NET.Sdk.x.y.z.nupkg: 994666 Microsoft.NET.StringTools.x.y.z.nupkg: 74038 Microsoft.NET.WebAssembly.Threading.x.y.z.nupkg: 44064 -Microsoft.NET.WebAssembly.Webcil.x.y.z.nupkg: 31426 Microsoft.NET.Workload.Emscripten.Current.Manifest-x.y.z-1.nupkg: 6044 Microsoft.NET.Workload.Emscripten.Current.Manifest-x.y.z.nupkg: 6036 Microsoft.NET.Workload.Emscripten.net6.Manifest-x.y.z.nupkg: 5613 @@ -1512,6 +1509,8 @@ sdk/x.y.z/Containers/tasks/netx.y/ja/System.CommandLine.resources.dll: 8704 sdk/x.y.z/Containers/tasks/netx.y/ko/Microsoft.DotNet.Cli.Utils.resources.dll: 7680 sdk/x.y.z/Containers/tasks/netx.y/ko/Microsoft.NET.Build.Containers.resources.dll: 17408 sdk/x.y.z/Containers/tasks/netx.y/ko/System.CommandLine.resources.dll: 8704 +sdk/x.y.z/Containers/tasks/netx.y/Microsoft.Build.dll: 5072384 +sdk/x.y.z/Containers/tasks/netx.y/Microsoft.Build.Framework.dll: 731648 sdk/x.y.z/Containers/tasks/netx.y/Microsoft.DotNet.Cli.Utils.dll: 244224 sdk/x.y.z/Containers/tasks/netx.y/Microsoft.Extensions.DependencyInjection.Abstractions.dll: 120320 sdk/x.y.z/Containers/tasks/netx.y/Microsoft.Extensions.DependencyInjection.dll: 196608 @@ -1522,6 +1521,7 @@ sdk/x.y.z/Containers/tasks/netx.y/Microsoft.Extensions.Options.dll: 117760 sdk/x.y.z/Containers/tasks/netx.y/Microsoft.Extensions.Primitives.dll: 64000 sdk/x.y.z/Containers/tasks/netx.y/Microsoft.NET.Build.Containers.deps.json: 37253 sdk/x.y.z/Containers/tasks/netx.y/Microsoft.NET.Build.Containers.dll: 535040 +sdk/x.y.z/Containers/tasks/netx.y/Microsoft.NET.StringTools.dll: 41984 sdk/x.y.z/Containers/tasks/netx.y/MSBuild.dll: 800768 sdk/x.y.z/Containers/tasks/netx.y/Newtonsoft.Json.dll: 1843200 sdk/x.y.z/Containers/tasks/netx.y/NuGet.Common.dll: 365568 @@ -1543,8 +1543,13 @@ sdk/x.y.z/Containers/tasks/netx.y/pt-BR/System.CommandLine.resources.dll: 8704 sdk/x.y.z/Containers/tasks/netx.y/ru/Microsoft.DotNet.Cli.Utils.resources.dll: 8704 sdk/x.y.z/Containers/tasks/netx.y/ru/Microsoft.NET.Build.Containers.resources.dll: 20480 sdk/x.y.z/Containers/tasks/netx.y/ru/System.CommandLine.resources.dll: 9216 +sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.dll: 367104 +sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.Messages.dll: 791552 sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/System.Security.Cryptography.Pkcs.dll: 741376 sdk/x.y.z/Containers/tasks/netx.y/System.CommandLine.dll: 337408 +sdk/x.y.z/Containers/tasks/netx.y/System.Configuration.ConfigurationManager.dll: 1060352 +sdk/x.y.z/Containers/tasks/netx.y/System.Diagnostics.EventLog.dll: 44032 +sdk/x.y.z/Containers/tasks/netx.y/System.Reflection.MetadataLoadContext.dll: 567296 sdk/x.y.z/Containers/tasks/netx.y/System.Security.Cryptography.Pkcs.dll: 621056 sdk/x.y.z/Containers/tasks/netx.y/System.Security.Cryptography.ProtectedData.dll: 34304 sdk/x.y.z/Containers/tasks/netx.y/tr/Microsoft.DotNet.Cli.Utils.resources.dll: 7680 @@ -2918,7 +2923,8 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.Bla sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.BlazorWebAssembly.Current.props: 2308 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.BlazorWebAssembly.Current.targets: 3411 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.BlazorWebAssembly.ServiceWorkerAssetsManifest.5_0.targets: 9260 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/tools/netx.y/Microsoft.NET.Sdk.BlazorWebAssembly.Tasks.dll: 97792 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.BlazorWebAssembly.ServiceWorkerAssetsManifest.targets: 12247 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/tools/netx.y/Microsoft.NET.Sdk.BlazorWebAssembly.Tasks.dll: 56320 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/tools/netx.y/Microsoft.NET.Sdk.BlazorWebAssembly.Tool.deps.json: 3595 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/tools/netx.y/Microsoft.NET.Sdk.BlazorWebAssembly.Tool.dll: 14336 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/tools/netx.y/Microsoft.NET.Sdk.BlazorWebAssembly.Tool.runtimeconfig.json: 384 @@ -2966,8 +2972,11 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/Sdk/Sdk.props: 1572 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/Sdk/Sdk.targets: 1113 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.AspNetCore.Razor.Utilities.Shared.dll: 72192 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.AspNetCore.Razor.Utilities.Shared.xml: 45965 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.deps.json: 14858 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.dll: 1335296 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.CSharp.dll: 90112 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.Language.dll: 1089536 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.Mvc.dll: 76288 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.SourceGenerators.deps.json: 17055 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.SourceGenerators.dll: 57856 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.Extensions.ObjectPool.dll: 14848 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/RazorSourceGenerator.razorencconfig: 70 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/System.Collections.Immutable.dll: 242688 @@ -2991,7 +3000,11 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/targets/Sdk.Razor.CurrentVersion.targets: sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/netx.y/Microsoft.Extensions.FileSystemGlobbing.dll: 80896 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/netx.y/Microsoft.NET.Sdk.Razor.Tasks.dll: 124928 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.AspNetCore.Razor.Utilities.Shared.dll: 150016 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.CodeAnalysis.Razor.Compiler.dll: 3578368 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.CodeAnalysis.Razor.Compiler.CSharp.dll: 209920 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.CodeAnalysis.Razor.Compiler.Language.dll: 2974208 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.CodeAnalysis.Razor.Compiler.Mvc.dll: 171520 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.CodeAnalysis.Razor.Compiler.Mvc.Version1_X.dll: 151040 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.CodeAnalysis.Razor.Compiler.Mvc.Version2_X.dll: 180736 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.Css.Parser.dll: 329728 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.Extensions.ObjectPool.dll: 25600 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Newtonsoft.Json.dll: 1843200 @@ -3002,7 +3015,7 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/Sdk/Sdk.props: 1346 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/Sdk/Sdk.StaticWebAssets.StaticAssets.ProjectSystem.props: 4890 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/Sdk/Sdk.targets: 1024 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.5_0.targets: 33577 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.Compression.targets: 10368 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.Compression.targets: 7466 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.CrossTargeting.targets: 4439 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.EmbeddedAssets.targets: 18113 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.JSModules.targets: 11399 @@ -3013,7 +3026,6 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.Stati sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.References.targets: 10427 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ScopedCss.5_0.targets: 25080 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ScopedCss.targets: 21337 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ServiceWorkerAssetsManifest.targets: 12518 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.SingleTargeting.targets: 822 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.targets: 34808 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Sdk.StaticWebAssets.CurrentVersion.props: 1582 @@ -3564,7 +3576,7 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_5_rec sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_all_warnaserror.globalconfig: 4916 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_all.globalconfig: 4031 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_default_warnaserror.globalconfig: 1860 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_default.globalconfig: 1031 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_default.globalconfig: 809 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_minimum_warnaserror.globalconfig: 3521 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_minimum.globalconfig: 2606 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_none_warnaserror.globalconfig: 3852 @@ -3574,7 +3586,7 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_rec sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_all_warnaserror.globalconfig: 4918 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_all.globalconfig: 3858 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_default_warnaserror.globalconfig: 1862 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_default.globalconfig: 858 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_default.globalconfig: 636 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_minimum_warnaserror.globalconfig: 3523 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_minimum.globalconfig: 2433 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_none_warnaserror.globalconfig: 3852 @@ -3584,7 +3596,7 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_rec sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_all_warnaserror.globalconfig: 4919 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_all.globalconfig: 3737 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_default_warnaserror.globalconfig: 1863 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_default.globalconfig: 737 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_default.globalconfig: 515 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_minimum_warnaserror.globalconfig: 3524 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_minimum.globalconfig: 2312 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_none_warnaserror.globalconfig: 3852 diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/MsftToSbSdkFiles.diff b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/MsftToSbSdkFiles.diff index 955c36509ee5..a50c205b8947 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/MsftToSbSdkFiles.diff +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/MsftToSbSdkFiles.diff @@ -44,6 +44,195 @@ index ------------ ./packs/Microsoft.NETCore.App.Ref/ ./packs/Microsoft.NETCore.App.Ref/x.y.z/ ./packs/Microsoft.NETCore.App.Ref/x.y.z/analyzers/ +@@ ------------ @@ + ./sdk/x.y.z/Containers/build/ + ./sdk/x.y.z/Containers/build/Microsoft.NET.Build.Containers.props + ./sdk/x.y.z/Containers/build/Microsoft.NET.Build.Containers.targets +-./sdk/x.y.z/Containers/containerize/ +-./sdk/x.y.z/Containers/containerize/containerize.deps.json +-./sdk/x.y.z/Containers/containerize/containerize.dll +-./sdk/x.y.z/Containers/containerize/containerize.exe +-./sdk/x.y.z/Containers/containerize/containerize.runtimeconfig.json +-./sdk/x.y.z/Containers/containerize/cs/ +-./sdk/x.y.z/Containers/containerize/cs/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/containerize/cs/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/containerize/cs/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/containerize/de/ +-./sdk/x.y.z/Containers/containerize/de/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/containerize/de/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/containerize/de/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/containerize/es/ +-./sdk/x.y.z/Containers/containerize/es/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/containerize/es/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/containerize/es/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/containerize/fr/ +-./sdk/x.y.z/Containers/containerize/fr/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/containerize/fr/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/containerize/fr/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/containerize/it/ +-./sdk/x.y.z/Containers/containerize/it/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/containerize/it/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/containerize/it/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/containerize/ja/ +-./sdk/x.y.z/Containers/containerize/ja/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/containerize/ja/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/containerize/ja/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/containerize/ko/ +-./sdk/x.y.z/Containers/containerize/ko/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/containerize/ko/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/containerize/ko/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.DotNet.Cli.Utils.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Configuration.Abstractions.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Configuration.Binder.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Configuration.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.DependencyInjection.Abstractions.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.DependencyInjection.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.DependencyModel.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Logging.Abstractions.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Logging.Configuration.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Logging.Console.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Logging.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Options.ConfigurationExtensions.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Options.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Primitives.dll +-./sdk/x.y.z/Containers/containerize/Microsoft.NET.Build.Containers.dll +-./sdk/x.y.z/Containers/containerize/MSBuild.dll +-./sdk/x.y.z/Containers/containerize/Newtonsoft.Json.dll +-./sdk/x.y.z/Containers/containerize/NuGet.Common.dll +-./sdk/x.y.z/Containers/containerize/NuGet.Configuration.dll +-./sdk/x.y.z/Containers/containerize/NuGet.DependencyResolver.Core.dll +-./sdk/x.y.z/Containers/containerize/NuGet.Frameworks.dll +-./sdk/x.y.z/Containers/containerize/NuGet.LibraryModel.dll +-./sdk/x.y.z/Containers/containerize/NuGet.Packaging.Core.dll +-./sdk/x.y.z/Containers/containerize/NuGet.Packaging.dll +-./sdk/x.y.z/Containers/containerize/NuGet.ProjectModel.dll +-./sdk/x.y.z/Containers/containerize/NuGet.Protocol.dll +-./sdk/x.y.z/Containers/containerize/NuGet.Versioning.dll +-./sdk/x.y.z/Containers/containerize/pl/ +-./sdk/x.y.z/Containers/containerize/pl/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/containerize/pl/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/containerize/pl/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/containerize/pt-BR/ +-./sdk/x.y.z/Containers/containerize/pt-BR/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/containerize/pt-BR/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/containerize/pt-BR/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/containerize/ru/ +-./sdk/x.y.z/Containers/containerize/ru/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/containerize/ru/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/containerize/ru/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/containerize/runtimes/ +-./sdk/x.y.z/Containers/containerize/runtimes/win/ +-./sdk/x.y.z/Containers/containerize/runtimes/win/lib/ +-./sdk/x.y.z/Containers/containerize/runtimes/win/lib/netx.y/ +-./sdk/x.y.z/Containers/containerize/runtimes/win/lib/netx.y/System.Security.Cryptography.Pkcs.dll +-./sdk/x.y.z/Containers/containerize/System.CommandLine.dll +-./sdk/x.y.z/Containers/containerize/System.Security.Cryptography.Pkcs.dll +-./sdk/x.y.z/Containers/containerize/System.Security.Cryptography.ProtectedData.dll +-./sdk/x.y.z/Containers/containerize/tr/ +-./sdk/x.y.z/Containers/containerize/tr/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/containerize/tr/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/containerize/tr/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/containerize/Valleysoft.DockerCredsProvider.dll +-./sdk/x.y.z/Containers/containerize/zh-Hans/ +-./sdk/x.y.z/Containers/containerize/zh-Hans/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/containerize/zh-Hans/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/containerize/zh-Hans/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/containerize/zh-Hant/ +-./sdk/x.y.z/Containers/containerize/zh-Hant/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/containerize/zh-Hant/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/containerize/zh-Hant/System.CommandLine.resources.dll + ./sdk/x.y.z/Containers/tasks/ +-./sdk/x.y.z/Containers/tasks/net472/ +-./sdk/x.y.z/Containers/tasks/net472/cs/ +-./sdk/x.y.z/Containers/tasks/net472/cs/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/cs/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/cs/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/de/ +-./sdk/x.y.z/Containers/tasks/net472/de/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/de/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/de/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/es/ +-./sdk/x.y.z/Containers/tasks/net472/es/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/es/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/es/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/fr/ +-./sdk/x.y.z/Containers/tasks/net472/fr/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/fr/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/fr/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/it/ +-./sdk/x.y.z/Containers/tasks/net472/it/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/it/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/it/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/ja/ +-./sdk/x.y.z/Containers/tasks/net472/ja/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/ja/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/ja/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/ko/ +-./sdk/x.y.z/Containers/tasks/net472/ko/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/ko/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/ko/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/Microsoft.Bcl.AsyncInterfaces.dll +-./sdk/x.y.z/Containers/tasks/net472/Microsoft.DotNet.Cli.Utils.dll +-./sdk/x.y.z/Containers/tasks/net472/Microsoft.DotNet.Cli.Utils.dll.config +-./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.DependencyInjection.Abstractions.dll +-./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.DependencyInjection.dll +-./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.DependencyModel.dll +-./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.Logging.Abstractions.dll +-./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.Logging.dll +-./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.Options.dll +-./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.Primitives.dll +-./sdk/x.y.z/Containers/tasks/net472/Microsoft.NET.Build.Containers.deps.json +-./sdk/x.y.z/Containers/tasks/net472/Microsoft.NET.Build.Containers.dll +-./sdk/x.y.z/Containers/tasks/net472/Microsoft.NET.Build.Containers.dll.config +-./sdk/x.y.z/Containers/tasks/net472/Newtonsoft.Json.dll +-./sdk/x.y.z/Containers/tasks/net472/NuGet.Common.dll +-./sdk/x.y.z/Containers/tasks/net472/NuGet.Configuration.dll +-./sdk/x.y.z/Containers/tasks/net472/NuGet.DependencyResolver.Core.dll +-./sdk/x.y.z/Containers/tasks/net472/NuGet.Frameworks.dll +-./sdk/x.y.z/Containers/tasks/net472/NuGet.LibraryModel.dll +-./sdk/x.y.z/Containers/tasks/net472/NuGet.Packaging.Core.dll +-./sdk/x.y.z/Containers/tasks/net472/NuGet.Packaging.dll +-./sdk/x.y.z/Containers/tasks/net472/NuGet.ProjectModel.dll +-./sdk/x.y.z/Containers/tasks/net472/NuGet.Protocol.dll +-./sdk/x.y.z/Containers/tasks/net472/NuGet.Versioning.dll +-./sdk/x.y.z/Containers/tasks/net472/pl/ +-./sdk/x.y.z/Containers/tasks/net472/pl/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/pl/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/pl/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/pt-BR/ +-./sdk/x.y.z/Containers/tasks/net472/pt-BR/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/pt-BR/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/pt-BR/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/ru/ +-./sdk/x.y.z/Containers/tasks/net472/ru/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/ru/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/ru/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/System.Buffers.dll +-./sdk/x.y.z/Containers/tasks/net472/System.CommandLine.dll +-./sdk/x.y.z/Containers/tasks/net472/System.Diagnostics.DiagnosticSource.dll +-./sdk/x.y.z/Containers/tasks/net472/System.Memory.dll +-./sdk/x.y.z/Containers/tasks/net472/System.Numerics.Vectors.dll +-./sdk/x.y.z/Containers/tasks/net472/System.Runtime.CompilerServices.Unsafe.dll +-./sdk/x.y.z/Containers/tasks/net472/System.Text.Encodings.Web.dll +-./sdk/x.y.z/Containers/tasks/net472/System.Text.Json.dll +-./sdk/x.y.z/Containers/tasks/net472/System.Threading.Tasks.Extensions.dll +-./sdk/x.y.z/Containers/tasks/net472/System.ValueTuple.dll +-./sdk/x.y.z/Containers/tasks/net472/tr/ +-./sdk/x.y.z/Containers/tasks/net472/tr/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/tr/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/tr/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/Valleysoft.DockerCredsProvider.dll +-./sdk/x.y.z/Containers/tasks/net472/zh-Hans/ +-./sdk/x.y.z/Containers/tasks/net472/zh-Hans/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/zh-Hans/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/zh-Hans/System.CommandLine.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/zh-Hant/ +-./sdk/x.y.z/Containers/tasks/net472/zh-Hant/Microsoft.DotNet.Cli.Utils.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/zh-Hant/Microsoft.NET.Build.Containers.resources.dll +-./sdk/x.y.z/Containers/tasks/net472/zh-Hant/System.CommandLine.resources.dll + ./sdk/x.y.z/Containers/tasks/netx.y/ + ./sdk/x.y.z/Containers/tasks/netx.y/cs/ + ./sdk/x.y.z/Containers/tasks/netx.y/cs/Microsoft.DotNet.Cli.Utils.resources.dll @@ ------------ @@ ./sdk/x.y.z/Microsoft.Build.NuGetSdkResolver.dll ./sdk/x.y.z/Microsoft.Build.Tasks.Core.dll From 949a3049bca4f1f1fc98d64dda0854402b1cc03f Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Tue, 19 Mar 2024 10:46:12 -0700 Subject: [PATCH 07/41] Don't run old sdk validation, restore test project in init-build.proj --- .../content/eng/sdkArchiveDiff.targets | 64 ------------------- .../content/eng/tools/init-build.proj | 8 +-- .../eng/unifiedBuildValidation.targets | 8 +-- .../content/repo-projects/installer.proj | 1 - 4 files changed, 7 insertions(+), 74 deletions(-) delete mode 100644 src/SourceBuild/content/eng/sdkArchiveDiff.targets diff --git a/src/SourceBuild/content/eng/sdkArchiveDiff.targets b/src/SourceBuild/content/eng/sdkArchiveDiff.targets deleted file mode 100644 index c3bc8078763a..000000000000 --- a/src/SourceBuild/content/eng/sdkArchiveDiff.targets +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - <_changedFiles Include="@(_ContentDifferences)" Condition="'%(_contentDifferences.Kind)' != 'Unchanged'" /> - <_sdkFilesDiff Include="@(_ContentDifferences)" Condition="'%(_contentDifferences.Kind)' == 'Added'" > - + - - <_sdkFilesDiff Include="@(_ContentDifferences)" Condition="'%(_contentDifferences.Kind)' == 'Removed'" > - - - - <_sdkFilesDiff Include="@(_ContentDifferences)" Condition="'%(_contentDifferences.Kind)' == 'Unchanged'" > - - - - - - $(ArtifactsLogDir)SdkArchiveContent.diff - - - - - - - - - - - diff --git a/src/SourceBuild/content/eng/tools/init-build.proj b/src/SourceBuild/content/eng/tools/init-build.proj index f573747acaa8..12d0f83b8293 100644 --- a/src/SourceBuild/content/eng/tools/init-build.proj +++ b/src/SourceBuild/content/eng/tools/init-build.proj @@ -15,7 +15,7 @@ UnpackTarballs; BuildXPlatTasks; BuildMSBuildSdkResolver; - BuildSdkArchiveDiff; + BuildUnifiedBuildValidationTests; BuildLeakDetection; ExtractToolPackage; GenerateRootFs; @@ -117,12 +117,12 @@ - - - diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index c144295b3012..92a3426269ba 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -2,14 +2,12 @@ $([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'test', 'Microsoft.DotNet.UnifiedBuild.Tests')) + $([MSBuild]::NormalizeDirectory('$(UnifiedBuildValidationTestsDir)', 'Microsoft.DotNet.UnifiedBuild.Tests')) - - - - + AfterTargets="Build" + DependsOnTargets="DetermineSourceBuiltSdkVersion"> %(SdkTarballItem.Identity) diff --git a/src/SourceBuild/content/repo-projects/installer.proj b/src/SourceBuild/content/repo-projects/installer.proj index 4b683e559303..25bf82b69ca6 100644 --- a/src/SourceBuild/content/repo-projects/installer.proj +++ b/src/SourceBuild/content/repo-projects/installer.proj @@ -148,7 +148,6 @@ UseHardlinksIfPossible="true" /> - From db4d2d2a54961f94ee8753387cbb9de531ecea63 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Tue, 19 Mar 2024 11:13:41 -0700 Subject: [PATCH 08/41] Revert changes from existing smoke tests --- .../assets/SdkFileDiffExclusions.txt | 4 + .../baselines/ArtifactsSizes/centos.8-x64.txt | 40 ++-- .../assets/baselines/MsftToSbSdkFiles.diff | 189 ------------------ 3 files changed, 18 insertions(+), 215 deletions(-) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkFileDiffExclusions.txt b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkFileDiffExclusions.txt index 338c94dcdae7..45bf347ff158 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkFileDiffExclusions.txt +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/SdkFileDiffExclusions.txt @@ -89,3 +89,7 @@ sb,./sdk/x.y.z/*/Microsoft.TestPlatform.TestHostRuntimeProvider.resources.dll sb,./sdk/x.y.z/*/Microsoft.VisualStudio.TestPlatform.Extensions.Html.TestLogger.resources.dll sb,./sdk/x.y.z/*/Microsoft.VisualStudio.TestPlatform.Extensions.Trx.TestLogger.resources.dll msft,./sdk/x.y.z/Extensions/*/* + +# https://github.com/dotnet/source-build/issues/3510 +msft,./sdk/x.y.z/Containers/containerize/** +msft,./sdk/x.y.z/Containers/tasks/net472/** diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/ArtifactsSizes/centos.8-x64.txt b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/ArtifactsSizes/centos.8-x64.txt index c31d1666326e..342b984b9a12 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/ArtifactsSizes/centos.8-x64.txt +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/ArtifactsSizes/centos.8-x64.txt @@ -14,6 +14,7 @@ host/fxr/x.y.z/libhostfxr.so: 4681016 Humanizer.Core.x.y.z.nupkg: 945071 LICENSE.txt: 1116 metadata/workloads/x.y.z/userlocal: 0 +Microsoft.ApplicationInsights.x.y.z-1.nupkg: 148627 Microsoft.ApplicationInsights.x.y.z.nupkg: 148568 Microsoft.Arcade.Common.x.y.z.nupkg: 57342 Microsoft.AspNetCore.Analyzers.x.y.z.nupkg: 17835 @@ -37,7 +38,7 @@ Microsoft.AspNetCore.Http.Connections.Common.x.y.z.nupkg: 21665 Microsoft.AspNetCore.Metadata.x.y.z.nupkg: 19582 Microsoft.AspNetCore.Mvc.Analyzers.x.y.z.nupkg: 20157 Microsoft.AspNetCore.Mvc.Api.Analyzers.x.y.z.nupkg: 28710 -Microsoft.AspNetCore.Mvc.Razor.Extensions.Tooling.Internal.x.y.z.nupkg: 94089 +Microsoft.AspNetCore.Mvc.Razor.Extensions.Tooling.Internal.x.y.z.nupkg: 446006 Microsoft.AspNetCore.SignalR.Common.x.y.z.nupkg: 31619 Microsoft.AspNetCore.SignalR.Protocols.Json.x.y.z.nupkg: 25486 Microsoft.AspNetCore.WebUtilities.x.y.z.nupkg: 60948 @@ -89,7 +90,7 @@ Microsoft.DiaSymReader.x.y.z-1.nupkg: 57796 Microsoft.DiaSymReader.x.y.z-2.nupkg: 57817 Microsoft.DiaSymReader.x.y.z.nupkg: 57811 Microsoft.DotNet.ApiCompat.Task.x.y.z.nupkg: 1280207 -Microsoft.DotNet.Arcade.Sdk.x.y.z.nupkg: 605055 +Microsoft.DotNet.Arcade.Sdk.x.y.z.nupkg: 876107 Microsoft.DotNet.Build.Tasks.Archives.x.y.z.nupkg: 11400 Microsoft.DotNet.Build.Tasks.Installers.x.y.z.nupkg: 104948 Microsoft.DotNet.Build.Tasks.Packaging.x.y.z.nupkg: 162274 @@ -111,6 +112,7 @@ Microsoft.DotNet.InternalAbstractions.x.y.z.nupkg: 10642 Microsoft.DotNet.MSBuildSdkResolver.x.y.z.nupkg: 114783 Microsoft.DotNet.NuGetRepack.Tasks.x.y.z.nupkg: 85406 Microsoft.DotNet.PackageTesting.x.y.z.nupkg: 37598 +Microsoft.DotNet.ScenarioTests.SdkTemplateTests.x.y.z.nupkg: 721284 Microsoft.DotNet.SharedFramework.Sdk.x.y.z.nupkg: 89834 Microsoft.DotNet.SignTool.x.y.z.nupkg: 212432 Microsoft.DotNet.SourceBuild.Tasks.x.y.z.nupkg: 46762 @@ -206,6 +208,7 @@ Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver.x.y.z.nupkg: 14414 Microsoft.NET.Sdk.x.y.z.nupkg: 994666 Microsoft.NET.StringTools.x.y.z.nupkg: 74038 Microsoft.NET.WebAssembly.Threading.x.y.z.nupkg: 44064 +Microsoft.NET.WebAssembly.Webcil.x.y.z.nupkg: 31426 Microsoft.NET.Workload.Emscripten.Current.Manifest-x.y.z-1.nupkg: 6044 Microsoft.NET.Workload.Emscripten.Current.Manifest-x.y.z.nupkg: 6036 Microsoft.NET.Workload.Emscripten.net6.Manifest-x.y.z.nupkg: 5613 @@ -1509,8 +1512,6 @@ sdk/x.y.z/Containers/tasks/netx.y/ja/System.CommandLine.resources.dll: 8704 sdk/x.y.z/Containers/tasks/netx.y/ko/Microsoft.DotNet.Cli.Utils.resources.dll: 7680 sdk/x.y.z/Containers/tasks/netx.y/ko/Microsoft.NET.Build.Containers.resources.dll: 17408 sdk/x.y.z/Containers/tasks/netx.y/ko/System.CommandLine.resources.dll: 8704 -sdk/x.y.z/Containers/tasks/netx.y/Microsoft.Build.dll: 5072384 -sdk/x.y.z/Containers/tasks/netx.y/Microsoft.Build.Framework.dll: 731648 sdk/x.y.z/Containers/tasks/netx.y/Microsoft.DotNet.Cli.Utils.dll: 244224 sdk/x.y.z/Containers/tasks/netx.y/Microsoft.Extensions.DependencyInjection.Abstractions.dll: 120320 sdk/x.y.z/Containers/tasks/netx.y/Microsoft.Extensions.DependencyInjection.dll: 196608 @@ -1521,7 +1522,6 @@ sdk/x.y.z/Containers/tasks/netx.y/Microsoft.Extensions.Options.dll: 117760 sdk/x.y.z/Containers/tasks/netx.y/Microsoft.Extensions.Primitives.dll: 64000 sdk/x.y.z/Containers/tasks/netx.y/Microsoft.NET.Build.Containers.deps.json: 37253 sdk/x.y.z/Containers/tasks/netx.y/Microsoft.NET.Build.Containers.dll: 535040 -sdk/x.y.z/Containers/tasks/netx.y/Microsoft.NET.StringTools.dll: 41984 sdk/x.y.z/Containers/tasks/netx.y/MSBuild.dll: 800768 sdk/x.y.z/Containers/tasks/netx.y/Newtonsoft.Json.dll: 1843200 sdk/x.y.z/Containers/tasks/netx.y/NuGet.Common.dll: 365568 @@ -1543,13 +1543,8 @@ sdk/x.y.z/Containers/tasks/netx.y/pt-BR/System.CommandLine.resources.dll: 8704 sdk/x.y.z/Containers/tasks/netx.y/ru/Microsoft.DotNet.Cli.Utils.resources.dll: 8704 sdk/x.y.z/Containers/tasks/netx.y/ru/Microsoft.NET.Build.Containers.resources.dll: 20480 sdk/x.y.z/Containers/tasks/netx.y/ru/System.CommandLine.resources.dll: 9216 -sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.dll: 367104 -sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.Messages.dll: 791552 sdk/x.y.z/Containers/tasks/netx.y/runtimes/win/lib/netx.y/System.Security.Cryptography.Pkcs.dll: 741376 sdk/x.y.z/Containers/tasks/netx.y/System.CommandLine.dll: 337408 -sdk/x.y.z/Containers/tasks/netx.y/System.Configuration.ConfigurationManager.dll: 1060352 -sdk/x.y.z/Containers/tasks/netx.y/System.Diagnostics.EventLog.dll: 44032 -sdk/x.y.z/Containers/tasks/netx.y/System.Reflection.MetadataLoadContext.dll: 567296 sdk/x.y.z/Containers/tasks/netx.y/System.Security.Cryptography.Pkcs.dll: 621056 sdk/x.y.z/Containers/tasks/netx.y/System.Security.Cryptography.ProtectedData.dll: 34304 sdk/x.y.z/Containers/tasks/netx.y/tr/Microsoft.DotNet.Cli.Utils.resources.dll: 7680 @@ -2923,8 +2918,7 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.Bla sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.BlazorWebAssembly.Current.props: 2308 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.BlazorWebAssembly.Current.targets: 3411 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.BlazorWebAssembly.ServiceWorkerAssetsManifest.5_0.targets: 9260 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/targets/Microsoft.NET.Sdk.BlazorWebAssembly.ServiceWorkerAssetsManifest.targets: 12247 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/tools/netx.y/Microsoft.NET.Sdk.BlazorWebAssembly.Tasks.dll: 56320 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/tools/netx.y/Microsoft.NET.Sdk.BlazorWebAssembly.Tasks.dll: 97792 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/tools/netx.y/Microsoft.NET.Sdk.BlazorWebAssembly.Tool.deps.json: 3595 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/tools/netx.y/Microsoft.NET.Sdk.BlazorWebAssembly.Tool.dll: 14336 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.BlazorWebAssembly/tools/netx.y/Microsoft.NET.Sdk.BlazorWebAssembly.Tool.runtimeconfig.json: 384 @@ -2972,11 +2966,8 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/Sdk/Sdk.props: 1572 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/Sdk/Sdk.targets: 1113 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.AspNetCore.Razor.Utilities.Shared.dll: 72192 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.AspNetCore.Razor.Utilities.Shared.xml: 45965 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.CSharp.dll: 90112 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.Language.dll: 1089536 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.Mvc.dll: 76288 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.SourceGenerators.deps.json: 17055 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.SourceGenerators.dll: 57856 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.deps.json: 14858 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.CodeAnalysis.Razor.Compiler.dll: 1335296 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/Microsoft.Extensions.ObjectPool.dll: 14848 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/RazorSourceGenerator.razorencconfig: 70 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/source-generators/System.Collections.Immutable.dll: 242688 @@ -3000,11 +2991,7 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/targets/Sdk.Razor.CurrentVersion.targets: sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/netx.y/Microsoft.Extensions.FileSystemGlobbing.dll: 80896 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/netx.y/Microsoft.NET.Sdk.Razor.Tasks.dll: 124928 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.AspNetCore.Razor.Utilities.Shared.dll: 150016 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.CodeAnalysis.Razor.Compiler.CSharp.dll: 209920 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.CodeAnalysis.Razor.Compiler.Language.dll: 2974208 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.CodeAnalysis.Razor.Compiler.Mvc.dll: 171520 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.CodeAnalysis.Razor.Compiler.Mvc.Version1_X.dll: 151040 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.CodeAnalysis.Razor.Compiler.Mvc.Version2_X.dll: 180736 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.CodeAnalysis.Razor.Compiler.dll: 3578368 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.Css.Parser.dll: 329728 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Microsoft.Extensions.ObjectPool.dll: 25600 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/Newtonsoft.Json.dll: 1843200 @@ -3015,7 +3002,7 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/Sdk/Sdk.props: 1346 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/Sdk/Sdk.StaticWebAssets.StaticAssets.ProjectSystem.props: 4890 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/Sdk/Sdk.targets: 1024 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.5_0.targets: 33577 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.Compression.targets: 7466 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.Compression.targets: 10368 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.CrossTargeting.targets: 4439 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.EmbeddedAssets.targets: 18113 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.JSModules.targets: 11399 @@ -3026,6 +3013,7 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.Stati sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.References.targets: 10427 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ScopedCss.5_0.targets: 25080 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ScopedCss.targets: 21337 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ServiceWorkerAssetsManifest.targets: 12518 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.SingleTargeting.targets: 822 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.targets: 34808 sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Sdk.StaticWebAssets.CurrentVersion.props: 1582 @@ -3576,7 +3564,7 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_5_rec sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_all_warnaserror.globalconfig: 4916 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_all.globalconfig: 4031 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_default_warnaserror.globalconfig: 1860 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_default.globalconfig: 809 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_default.globalconfig: 1031 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_minimum_warnaserror.globalconfig: 3521 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_minimum.globalconfig: 2606 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_none_warnaserror.globalconfig: 3852 @@ -3586,7 +3574,7 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_6_rec sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_all_warnaserror.globalconfig: 4918 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_all.globalconfig: 3858 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_default_warnaserror.globalconfig: 1862 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_default.globalconfig: 636 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_default.globalconfig: 858 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_minimum_warnaserror.globalconfig: 3523 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_minimum.globalconfig: 2433 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_none_warnaserror.globalconfig: 3852 @@ -3596,7 +3584,7 @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_7_rec sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_all_warnaserror.globalconfig: 4919 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_all.globalconfig: 3737 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_default_warnaserror.globalconfig: 1863 -sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_default.globalconfig: 515 +sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_default.globalconfig: 737 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_minimum_warnaserror.globalconfig: 3524 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_minimum.globalconfig: 2312 sdk/x.y.z/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevelusage_8_none_warnaserror.globalconfig: 3852 diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/MsftToSbSdkFiles.diff b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/MsftToSbSdkFiles.diff index a50c205b8947..955c36509ee5 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/MsftToSbSdkFiles.diff +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/MsftToSbSdkFiles.diff @@ -44,195 +44,6 @@ index ------------ ./packs/Microsoft.NETCore.App.Ref/ ./packs/Microsoft.NETCore.App.Ref/x.y.z/ ./packs/Microsoft.NETCore.App.Ref/x.y.z/analyzers/ -@@ ------------ @@ - ./sdk/x.y.z/Containers/build/ - ./sdk/x.y.z/Containers/build/Microsoft.NET.Build.Containers.props - ./sdk/x.y.z/Containers/build/Microsoft.NET.Build.Containers.targets --./sdk/x.y.z/Containers/containerize/ --./sdk/x.y.z/Containers/containerize/containerize.deps.json --./sdk/x.y.z/Containers/containerize/containerize.dll --./sdk/x.y.z/Containers/containerize/containerize.exe --./sdk/x.y.z/Containers/containerize/containerize.runtimeconfig.json --./sdk/x.y.z/Containers/containerize/cs/ --./sdk/x.y.z/Containers/containerize/cs/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/containerize/cs/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/containerize/cs/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/containerize/de/ --./sdk/x.y.z/Containers/containerize/de/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/containerize/de/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/containerize/de/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/containerize/es/ --./sdk/x.y.z/Containers/containerize/es/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/containerize/es/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/containerize/es/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/containerize/fr/ --./sdk/x.y.z/Containers/containerize/fr/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/containerize/fr/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/containerize/fr/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/containerize/it/ --./sdk/x.y.z/Containers/containerize/it/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/containerize/it/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/containerize/it/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/containerize/ja/ --./sdk/x.y.z/Containers/containerize/ja/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/containerize/ja/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/containerize/ja/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/containerize/ko/ --./sdk/x.y.z/Containers/containerize/ko/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/containerize/ko/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/containerize/ko/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/containerize/Microsoft.DotNet.Cli.Utils.dll --./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Configuration.Abstractions.dll --./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Configuration.Binder.dll --./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Configuration.dll --./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.DependencyInjection.Abstractions.dll --./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.DependencyInjection.dll --./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.DependencyModel.dll --./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Logging.Abstractions.dll --./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Logging.Configuration.dll --./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Logging.Console.dll --./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Logging.dll --./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Options.ConfigurationExtensions.dll --./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Options.dll --./sdk/x.y.z/Containers/containerize/Microsoft.Extensions.Primitives.dll --./sdk/x.y.z/Containers/containerize/Microsoft.NET.Build.Containers.dll --./sdk/x.y.z/Containers/containerize/MSBuild.dll --./sdk/x.y.z/Containers/containerize/Newtonsoft.Json.dll --./sdk/x.y.z/Containers/containerize/NuGet.Common.dll --./sdk/x.y.z/Containers/containerize/NuGet.Configuration.dll --./sdk/x.y.z/Containers/containerize/NuGet.DependencyResolver.Core.dll --./sdk/x.y.z/Containers/containerize/NuGet.Frameworks.dll --./sdk/x.y.z/Containers/containerize/NuGet.LibraryModel.dll --./sdk/x.y.z/Containers/containerize/NuGet.Packaging.Core.dll --./sdk/x.y.z/Containers/containerize/NuGet.Packaging.dll --./sdk/x.y.z/Containers/containerize/NuGet.ProjectModel.dll --./sdk/x.y.z/Containers/containerize/NuGet.Protocol.dll --./sdk/x.y.z/Containers/containerize/NuGet.Versioning.dll --./sdk/x.y.z/Containers/containerize/pl/ --./sdk/x.y.z/Containers/containerize/pl/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/containerize/pl/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/containerize/pl/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/containerize/pt-BR/ --./sdk/x.y.z/Containers/containerize/pt-BR/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/containerize/pt-BR/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/containerize/pt-BR/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/containerize/ru/ --./sdk/x.y.z/Containers/containerize/ru/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/containerize/ru/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/containerize/ru/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/containerize/runtimes/ --./sdk/x.y.z/Containers/containerize/runtimes/win/ --./sdk/x.y.z/Containers/containerize/runtimes/win/lib/ --./sdk/x.y.z/Containers/containerize/runtimes/win/lib/netx.y/ --./sdk/x.y.z/Containers/containerize/runtimes/win/lib/netx.y/System.Security.Cryptography.Pkcs.dll --./sdk/x.y.z/Containers/containerize/System.CommandLine.dll --./sdk/x.y.z/Containers/containerize/System.Security.Cryptography.Pkcs.dll --./sdk/x.y.z/Containers/containerize/System.Security.Cryptography.ProtectedData.dll --./sdk/x.y.z/Containers/containerize/tr/ --./sdk/x.y.z/Containers/containerize/tr/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/containerize/tr/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/containerize/tr/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/containerize/Valleysoft.DockerCredsProvider.dll --./sdk/x.y.z/Containers/containerize/zh-Hans/ --./sdk/x.y.z/Containers/containerize/zh-Hans/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/containerize/zh-Hans/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/containerize/zh-Hans/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/containerize/zh-Hant/ --./sdk/x.y.z/Containers/containerize/zh-Hant/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/containerize/zh-Hant/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/containerize/zh-Hant/System.CommandLine.resources.dll - ./sdk/x.y.z/Containers/tasks/ --./sdk/x.y.z/Containers/tasks/net472/ --./sdk/x.y.z/Containers/tasks/net472/cs/ --./sdk/x.y.z/Containers/tasks/net472/cs/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/tasks/net472/cs/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/tasks/net472/cs/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/tasks/net472/de/ --./sdk/x.y.z/Containers/tasks/net472/de/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/tasks/net472/de/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/tasks/net472/de/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/tasks/net472/es/ --./sdk/x.y.z/Containers/tasks/net472/es/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/tasks/net472/es/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/tasks/net472/es/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/tasks/net472/fr/ --./sdk/x.y.z/Containers/tasks/net472/fr/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/tasks/net472/fr/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/tasks/net472/fr/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/tasks/net472/it/ --./sdk/x.y.z/Containers/tasks/net472/it/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/tasks/net472/it/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/tasks/net472/it/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/tasks/net472/ja/ --./sdk/x.y.z/Containers/tasks/net472/ja/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/tasks/net472/ja/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/tasks/net472/ja/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/tasks/net472/ko/ --./sdk/x.y.z/Containers/tasks/net472/ko/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/tasks/net472/ko/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/tasks/net472/ko/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/tasks/net472/Microsoft.Bcl.AsyncInterfaces.dll --./sdk/x.y.z/Containers/tasks/net472/Microsoft.DotNet.Cli.Utils.dll --./sdk/x.y.z/Containers/tasks/net472/Microsoft.DotNet.Cli.Utils.dll.config --./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.DependencyInjection.Abstractions.dll --./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.DependencyInjection.dll --./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.DependencyModel.dll --./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.Logging.Abstractions.dll --./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.Logging.dll --./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.Options.dll --./sdk/x.y.z/Containers/tasks/net472/Microsoft.Extensions.Primitives.dll --./sdk/x.y.z/Containers/tasks/net472/Microsoft.NET.Build.Containers.deps.json --./sdk/x.y.z/Containers/tasks/net472/Microsoft.NET.Build.Containers.dll --./sdk/x.y.z/Containers/tasks/net472/Microsoft.NET.Build.Containers.dll.config --./sdk/x.y.z/Containers/tasks/net472/Newtonsoft.Json.dll --./sdk/x.y.z/Containers/tasks/net472/NuGet.Common.dll --./sdk/x.y.z/Containers/tasks/net472/NuGet.Configuration.dll --./sdk/x.y.z/Containers/tasks/net472/NuGet.DependencyResolver.Core.dll --./sdk/x.y.z/Containers/tasks/net472/NuGet.Frameworks.dll --./sdk/x.y.z/Containers/tasks/net472/NuGet.LibraryModel.dll --./sdk/x.y.z/Containers/tasks/net472/NuGet.Packaging.Core.dll --./sdk/x.y.z/Containers/tasks/net472/NuGet.Packaging.dll --./sdk/x.y.z/Containers/tasks/net472/NuGet.ProjectModel.dll --./sdk/x.y.z/Containers/tasks/net472/NuGet.Protocol.dll --./sdk/x.y.z/Containers/tasks/net472/NuGet.Versioning.dll --./sdk/x.y.z/Containers/tasks/net472/pl/ --./sdk/x.y.z/Containers/tasks/net472/pl/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/tasks/net472/pl/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/tasks/net472/pl/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/tasks/net472/pt-BR/ --./sdk/x.y.z/Containers/tasks/net472/pt-BR/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/tasks/net472/pt-BR/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/tasks/net472/pt-BR/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/tasks/net472/ru/ --./sdk/x.y.z/Containers/tasks/net472/ru/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/tasks/net472/ru/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/tasks/net472/ru/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/tasks/net472/System.Buffers.dll --./sdk/x.y.z/Containers/tasks/net472/System.CommandLine.dll --./sdk/x.y.z/Containers/tasks/net472/System.Diagnostics.DiagnosticSource.dll --./sdk/x.y.z/Containers/tasks/net472/System.Memory.dll --./sdk/x.y.z/Containers/tasks/net472/System.Numerics.Vectors.dll --./sdk/x.y.z/Containers/tasks/net472/System.Runtime.CompilerServices.Unsafe.dll --./sdk/x.y.z/Containers/tasks/net472/System.Text.Encodings.Web.dll --./sdk/x.y.z/Containers/tasks/net472/System.Text.Json.dll --./sdk/x.y.z/Containers/tasks/net472/System.Threading.Tasks.Extensions.dll --./sdk/x.y.z/Containers/tasks/net472/System.ValueTuple.dll --./sdk/x.y.z/Containers/tasks/net472/tr/ --./sdk/x.y.z/Containers/tasks/net472/tr/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/tasks/net472/tr/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/tasks/net472/tr/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/tasks/net472/Valleysoft.DockerCredsProvider.dll --./sdk/x.y.z/Containers/tasks/net472/zh-Hans/ --./sdk/x.y.z/Containers/tasks/net472/zh-Hans/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/tasks/net472/zh-Hans/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/tasks/net472/zh-Hans/System.CommandLine.resources.dll --./sdk/x.y.z/Containers/tasks/net472/zh-Hant/ --./sdk/x.y.z/Containers/tasks/net472/zh-Hant/Microsoft.DotNet.Cli.Utils.resources.dll --./sdk/x.y.z/Containers/tasks/net472/zh-Hant/Microsoft.NET.Build.Containers.resources.dll --./sdk/x.y.z/Containers/tasks/net472/zh-Hant/System.CommandLine.resources.dll - ./sdk/x.y.z/Containers/tasks/netx.y/ - ./sdk/x.y.z/Containers/tasks/netx.y/cs/ - ./sdk/x.y.z/Containers/tasks/netx.y/cs/Microsoft.DotNet.Cli.Utils.resources.dll @@ ------------ @@ ./sdk/x.y.z/Microsoft.Build.NuGetSdkResolver.dll ./sdk/x.y.z/Microsoft.Build.Tasks.Core.dll From 47053c4b8edfe124aff9e5544ba1696a25e5eec9 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Tue, 19 Mar 2024 11:41:41 -0700 Subject: [PATCH 09/41] Keep building sdkArchiveDiff tasks for finding the single sdk. We'll move it into the test later --- src/SourceBuild/content/eng/tools/init-build.proj | 10 ++++++++++ .../content/eng/unifiedBuildValidation.targets | 3 +++ 2 files changed, 13 insertions(+) diff --git a/src/SourceBuild/content/eng/tools/init-build.proj b/src/SourceBuild/content/eng/tools/init-build.proj index 12d0f83b8293..54a657c9eaad 100644 --- a/src/SourceBuild/content/eng/tools/init-build.proj +++ b/src/SourceBuild/content/eng/tools/init-build.proj @@ -15,6 +15,7 @@ UnpackTarballs; BuildXPlatTasks; BuildMSBuildSdkResolver; + BuildSdkArchiveDiff; BuildUnifiedBuildValidationTests; BuildLeakDetection; ExtractToolPackage; @@ -126,6 +127,15 @@ Targets="Build" /> + + + + + diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index 92a3426269ba..9103da84d61a 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -1,5 +1,8 @@ + + + $([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'test', 'Microsoft.DotNet.UnifiedBuild.Tests')) $([MSBuild]::NormalizeDirectory('$(UnifiedBuildValidationTestsDir)', 'Microsoft.DotNet.UnifiedBuild.Tests')) From a783e3b6a9e7a383aa16201ed7440d2645a14190 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Tue, 19 Mar 2024 14:34:34 -0700 Subject: [PATCH 10/41] Remove assemblies that aren't in both sdk's from version validation --- .../SdkContentTests.cs | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs index 4ae0d304d346..d4bfa6ceb6d5 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs @@ -89,19 +89,32 @@ private static void RemoveExcludedAssemblyVersionPaths(Dictionary assemblyVersionDiffFilters = GetSdkAssemblyVersionDiffExclusionFilters() .Select(filter => filter.TrimStart("./".ToCharArray())); + // Remove entries that are not in both. If they should be in both, the mismatch will be caught in another test + foreach(var kvp in sbSdkAssemblyVersions) + { + if (msftSdkAssemblyVersions.ContainsKey(kvp.Key)) + { + sbSdkAssemblyVersions.Remove(kvp.Key); + } + } + + foreach(var kvp in msftSdkAssemblyVersions) + { + if (sbSdkAssemblyVersions.ContainsKey(kvp.Key)) + { + msftSdkAssemblyVersions.Remove(kvp.Key); + } + } - // Remove any excluded files as long as SB SDK's file has the same or greater assembly version compared to the corresponding + // Remove any excluded files as long as UB SDK's file has the same or greater assembly version compared to the corresponding // file in the MSFT SDK. If the version is less, the file will show up in the results as this is not a scenario // that is valid for shipping. string[] sbSdkFileArray = sbSdkAssemblyVersions.Keys.ToArray(); for (int i = sbSdkFileArray.Length - 1; i >= 0; i--) { string assemblyPath = sbSdkFileArray[i]; - Version? sbVersion = sbSdkAssemblyVersions[assemblyPath]; - Version? msftVersion = msftSdkAssemblyVersions[assemblyPath]; - - if (sbVersion is not null && - msftVersion is not null && + if (sbSdkAssemblyVersions.TryGetValue(assemblyPath, out Version? sbVersion) && + msftSdkAssemblyVersions.TryGetValue(assemblyPath, out Version? msftVersion) && sbVersion >= msftVersion && Utilities.IsFileExcluded(assemblyPath, assemblyVersionDiffFilters)) { From 7180f587339da285f85a4290d11680a4656a2472 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Wed, 20 Mar 2024 14:43:00 -0700 Subject: [PATCH 11/41] Clean up testing and move sdk download to test project --- .../content/eng/tools/init-build.proj | 10 - .../Archive.cs | 136 ------- .../Diff.cs | 126 ------- .../FindArchiveDiffs.cs | 49 --- .../GetClosestArchive.cs | 94 ----- .../GetClosestOfficialSdk.cs | 44 --- .../GetValidArchiveItems.cs | 57 --- ...et.SourceBuild.Tasks.SdkArchiveDiff.csproj | 12 - .../VersionIdentifier.cs | 257 ------------- .../eng/unifiedBuildValidation.targets | 31 +- .../BaselineHelper.cs | 8 +- .../Config.cs | 90 +++-- .../DotNetHelper.cs | 341 ------------------ .../DotNetTemplate.cs | 21 -- .../Exclusions.cs | 43 ++- .../SdkContentTests.cs | 123 ++----- .../SdkTests.cs | 20 - .../SkippableFactAttribute.cs | 53 --- .../TestBase.cs | 8 +- .../Utilities.cs | 18 +- .../assets/NativeDlls-win-any.txt | 4 +- .../assets/NativeDlls-win-x64.txt | 7 +- .../assets/NativeDlls.txt | 5 +- .../assets/SdkFileDiffExclusions.txt | 24 -- .../baselines/MsftToSbSdkFiles-linux-x64.diff | 45 +-- 25 files changed, 170 insertions(+), 1456 deletions(-) delete mode 100644 src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/Archive.cs delete mode 100644 src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/Diff.cs delete mode 100644 src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/FindArchiveDiffs.cs delete mode 100644 src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/GetClosestArchive.cs delete mode 100644 src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/GetClosestOfficialSdk.cs delete mode 100644 src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/GetValidArchiveItems.cs delete mode 100644 src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff.csproj delete mode 100644 src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/VersionIdentifier.cs delete mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetHelper.cs delete mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetTemplate.cs delete mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkTests.cs delete mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SkippableFactAttribute.cs delete mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions.txt diff --git a/src/SourceBuild/content/eng/tools/init-build.proj b/src/SourceBuild/content/eng/tools/init-build.proj index 54a657c9eaad..12d0f83b8293 100644 --- a/src/SourceBuild/content/eng/tools/init-build.proj +++ b/src/SourceBuild/content/eng/tools/init-build.proj @@ -15,7 +15,6 @@ UnpackTarballs; BuildXPlatTasks; BuildMSBuildSdkResolver; - BuildSdkArchiveDiff; BuildUnifiedBuildValidationTests; BuildLeakDetection; ExtractToolPackage; @@ -127,15 +126,6 @@ Targets="Build" /> - - - - - diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/Archive.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/Archive.cs deleted file mode 100644 index 1417c88cad2c..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/Archive.cs +++ /dev/null @@ -1,136 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Formats.Tar; -using System.IO; -using System.IO.Compression; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; - -public abstract class Archive : IDisposable -{ - public static async Task Create(string path, CancellationToken cancellationToken = default) - { - if (path.EndsWith(".tar.gz")) - return await TarArchive.Create(path, cancellationToken); - else if (path.EndsWith(".zip")) - return ZipFileArchive.Create(path); - else - throw new NotSupportedException("Unsupported archive type"); - } - - public abstract string[] GetFileNames(); - - public abstract bool Contains(string relativePath); - - public abstract void Dispose(); - - public class TarArchive : Archive - { - private string _extractedFolder; - - private TarArchive(string extractedFolder) - { - _extractedFolder = extractedFolder; - } - - public static new async Task Create(string path, CancellationToken cancellationToken = default) - { - var tmpFolder = Directory.CreateTempSubdirectory(nameof(FindArchiveDiffs)); - using (var gzStream = File.OpenRead(path)) - using (var gzipStream = new GZipStream(gzStream, CompressionMode.Decompress)) - { - await TarFile.ExtractToDirectoryAsync(gzipStream, tmpFolder.FullName, true, cancellationToken); - } - return new TarArchive(tmpFolder.FullName); - } - - public override bool Contains(string relativePath) - { - return File.Exists(Path.Combine(_extractedFolder, relativePath)); - } - - public override string[] GetFileNames() - { - return Directory.GetFiles(_extractedFolder, "*", SearchOption.AllDirectories).Select(f => f.Substring(_extractedFolder.Length + 1)).ToArray(); - } - - public override void Dispose() - { - if (Directory.Exists(_extractedFolder)) - Directory.Delete(_extractedFolder, true); - } - } - - public class ZipFileArchive : Archive - { - private ZipArchive _archive; - - private ZipFileArchive(ZipArchive archive) - { - _archive = archive; - } - - public static ZipFileArchive Create(string path) - { - return new ZipFileArchive(new ZipArchive(File.OpenRead(path))); - } - - public override bool Contains(string relativePath) - { - return _archive.GetEntry(relativePath) != null; - } - - public override string[] GetFileNames() - { - return _archive.Entries.Select(e => e.FullName).ToArray(); - } - - public override void Dispose() - { - _archive.Dispose(); - } - } - - private static string GetArchiveExtension(string path) - { - if (path.EndsWith(".tar.gz")) - { - return ".tar.gz"; - } - else if (path.EndsWith(".zip")) - { - return ".zip"; - } - else - { - throw new ArgumentException($"Invalid archive extension '{path}': must end with .tar.gz or .zip"); - } - } - - public static (string Version, string Rid, string extension) GetInfoFromFileName(string filename, string packageName) - { - var extension = GetArchiveExtension(filename); - var Version = VersionIdentifier.GetVersion(filename); - if (Version is null) - throw new ArgumentException("Invalid archive file name '{filename}': No valid version found in file name."); - // Once we've removed the version, package name, and extension, we should be left with the RID - var Rid = filename - .Replace(extension, "") - .Replace(Version, "") - .Replace(packageName, "") - .Trim('-', '.', '_'); - - // A RID with '.' must have a version number after the first '.' in each part of the RID. For example, alpine.3.10-arm64. - // Otherwise, it's likely an archive of another type of file that we don't handle here, for example, .msi.wixpack.zip. - var ridParts = Rid.Split('-'); - foreach(var item in ridParts.SelectMany(p => p.Split('.').Skip(1))) - { - if (!int.TryParse(item, out _)) - throw new ArgumentException($"Invalid Rid '{Rid}' in archive file name '{filename}'. Expected RID with '.' to be part of a version. This likely means the file is an archive of a different file type."); - } - return (Version, Rid, extension); - } -} diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/Diff.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/Diff.cs deleted file mode 100644 index 008fe67f0e16..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/Diff.cs +++ /dev/null @@ -1,126 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Threading; -using Microsoft.Build.Framework; -using Microsoft.Build.Utilities; - -static class Diff -{ - public static ITaskItem TaskItemFromDiff((string, DifferenceKind) diff) - { - var item = new TaskItem(diff.Item1); - item.SetMetadata("Kind", Enum.GetName(diff.Item2)); - return item; - } - - public enum DifferenceKind - { - /// - /// Present in the test but not in the baseline - /// - Added, - - /// - /// Present in the baseline but not in the test - /// - Removed, - - /// - /// Present in both the baseline and test - /// - Unchanged - } - - /// - /// Uses the Longest Common Subsequence algorithm (as used in 'git diff') to find the differences between two lists of strings. - /// Returns a list of the joined lists with the differences marked as either added or removed. - /// - public static List<(string, DifferenceKind DifferenceKind)> GetDiffs( - Span baselineSequence, - Span testSequence, - Func equalityComparer, - Func? formatter = null, - CancellationToken cancellationToken = default) - { - // Edit distance algorithm: https://en.wikipedia.org/wiki/Longest_common_subsequence - // cancellationToken.ThrowIfCancellationRequested(); - formatter ??= static s => s; - - // Optimization: remove common prefix - int i = 0; - List<(string, DifferenceKind)> prefix = []; - while (i < baselineSequence.Length && i < testSequence.Length && equalityComparer(baselineSequence[i], testSequence[i])) - { - prefix.Add((formatter(baselineSequence[i]), DifferenceKind.Unchanged)); - i++; - } - - baselineSequence = baselineSequence[i..]; - testSequence = testSequence[i..]; - - // Initialize first row and column - int[,] m = new int[baselineSequence.Length + 1, testSequence.Length + 1]; - for (i = 0; i <= baselineSequence.Length; i++) - { - m[i, 0] = i; - } - for (i = 0; i <= testSequence.Length; i++) - { - m[0, i] = i; - } - - // Compute edit distance - for (i = 1; i <= baselineSequence.Length; i++) - { - cancellationToken.ThrowIfCancellationRequested(); - for (int j = 1; j <= testSequence.Length; j++) - { - if (equalityComparer(baselineSequence[i - 1], testSequence[j - 1])) - { - m[i, j] = m[i - 1, j - 1]; - } - else - { - m[i, j] = 1 + Math.Min(m[i - 1, j], m[i, j - 1]); - } - } - } - - // Trace back the edits - int row = baselineSequence.Length; - int col = testSequence.Length; - List<(string, DifferenceKind)> diff = []; - while (row > 0 || col > 0) - { - cancellationToken.ThrowIfCancellationRequested(); - if (row > 0 && col > 0 && equalityComparer(baselineSequence[row - 1], testSequence[col - 1])) - { - diff.Add((formatter(baselineSequence[row - 1]), DifferenceKind.Unchanged)); - row--; - col--; - } - else if (col > 0 && (row == 0 || m[row, col - 1] <= m[row - 1, col])) - { - diff.Add((formatter(testSequence[col - 1]), DifferenceKind.Added)); - col--; - } - else if (row > 0 && (col == 0 || m[row, col - 1] > m[row - 1, col])) - { - diff.Add((formatter(baselineSequence[row - 1]), DifferenceKind.Removed)); - row--; - } - else - { - throw new UnreachableException(); - } - } - diff.Reverse(); - prefix.AddRange(diff); - return prefix; - } - -} diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/FindArchiveDiffs.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/FindArchiveDiffs.cs deleted file mode 100644 index 9fc19a7385c0..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/FindArchiveDiffs.cs +++ /dev/null @@ -1,49 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Build.Framework; -using Task = System.Threading.Tasks.Task; - -public class FindArchiveDiffs : Microsoft.Build.Utilities.Task, ICancelableTask -{ - [Required] - public required ITaskItem BaselineArchive { get; init; } - - [Required] - public required ITaskItem TestArchive { get; init; } - - [Output] - public ITaskItem[] ContentDifferences { get; set; } = []; - - private CancellationTokenSource _cancellationTokenSource = new(); - private CancellationToken cancellationToken => _cancellationTokenSource.Token; - - public override bool Execute() - { - return Task.Run(ExecuteAsync).Result; - } - - public async Task ExecuteAsync() - { - var baselineTask = Archive.Create(BaselineArchive.ItemSpec); - var testTask = Archive.Create(TestArchive.ItemSpec); - Task.WaitAll([baselineTask, testTask], cancellationToken); - using var baseline = await baselineTask; - using var test = await testTask; - var baselineFiles = baseline.GetFileNames(); - var testFiles = test.GetFileNames(); - ContentDifferences = - Diff.GetDiffs(baselineFiles, testFiles, VersionIdentifier.AreVersionlessEqual, static p => VersionIdentifier.RemoveVersions(p, "{VERSION}"), cancellationToken) - .Select(Diff.TaskItemFromDiff) - .ToArray(); - return true; - } - - public void Cancel() - { - _cancellationTokenSource.Cancel(); - } -} diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/GetClosestArchive.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/GetClosestArchive.cs deleted file mode 100644 index 85592191d0b4..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/GetClosestArchive.cs +++ /dev/null @@ -1,94 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.IO; -using System.Net.Http; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Build.Framework; - -public abstract class GetClosestArchive : Microsoft.Build.Utilities.Task, ICancelableTask -{ - [Required] - public required string BuiltArchivePath { get; init; } - - [Output] - public string ClosestOfficialArchivePath { get; set; } = ""; - - private string? _builtVersion; - protected string BuiltVersion - { - get => _builtVersion ?? throw new InvalidOperationException(); - private set => _builtVersion = value; - } - - private string? _builtRid; - protected string BuiltRid - { - get => _builtRid ?? throw new InvalidOperationException(); - private set => _builtRid = value; - } - - private string? _archiveExtension; - protected string ArchiveExtension - { - get => _archiveExtension ?? throw new InvalidOperationException(); - private set => _archiveExtension = value; - } - - /// - /// The name of the package to find the closest official archive for. For example, "dotnet-sdk" or "aspnetcore-runtime". - /// - protected abstract string ArchiveName { get; } - - private CancellationTokenSource _cancellationTokenSource = new(); - protected CancellationToken CancellationToken => _cancellationTokenSource.Token; - public void Cancel() - { - _cancellationTokenSource.Cancel(); - } - - /// - /// Get the URL of the latest official archive for the given version string and RID. - /// - public abstract Task GetClosestOfficialArchiveUrl(); - - public abstract Task GetClosestOfficialArchiveVersion(); - - public override bool Execute() - { - return Task.Run(ExecuteAsync).Result; - } - - public async Task ExecuteAsync() - { - CancellationToken.ThrowIfCancellationRequested(); - var filename = Path.GetFileName(BuiltArchivePath); - (BuiltVersion, BuiltRid, ArchiveExtension) = Archive.GetInfoFromFileName(filename, ArchiveName); - Log.LogMessage($"Finding closest official archive for '{ArchiveName}' version '{BuiltVersion}' RID '{BuiltRid}'"); - - string? downloadUrl = await GetClosestOfficialArchiveUrl(); - if (downloadUrl == null) - { - Log.LogError($"Failed to find a download URL for '{ArchiveName}' version '{BuiltVersion}' RID '{BuiltRid}'"); - return false; - } - - HttpClient client = new HttpClient(); - - Log.LogMessage(MessageImportance.High, $"Downloading {downloadUrl}"); - HttpResponseMessage packageResponse = await client.GetAsync(downloadUrl, CancellationToken); - - var packageUriPath = packageResponse.RequestMessage!.RequestUri!.LocalPath; - - ClosestOfficialArchivePath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName() + "." + Path.GetFileName(packageUriPath)); - Log.LogMessage($"Copying {packageUriPath} to {ClosestOfficialArchivePath}"); - using (var file = File.Create(ClosestOfficialArchivePath)) - { - await packageResponse.Content.CopyToAsync(file, CancellationToken); - } - - return true; - } -} diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/GetClosestOfficialSdk.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/GetClosestOfficialSdk.cs deleted file mode 100644 index bb038516c434..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/GetClosestOfficialSdk.cs +++ /dev/null @@ -1,44 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System.Net; -using System.Net.Http; -using System.Threading.Tasks; -using Microsoft.Build.Framework; - -public class GetClosestOfficialSdk : GetClosestArchive -{ - protected override string ArchiveName => "dotnet-sdk"; - - HttpClient client = new HttpClient(new HttpClientHandler() { AllowAutoRedirect = false }); - - private string? closestVersion; - private string? closestUrl; - - public override async Task GetClosestOfficialArchiveUrl() - { - // Channel in the form of 9.0.1xx - var channel = BuiltVersion[..5] + "xx"; - var akaMsUrl = $"https://aka.ms/dotnet/{channel}/daily/{ArchiveName}-{BuiltRid}{ArchiveExtension}"; - var redirectResponse = await client.GetAsync(akaMsUrl, CancellationToken); - // aka.ms returns a 301 for valid redirects and a 302 to Bing for invalid URLs - if (redirectResponse.StatusCode != HttpStatusCode.Moved) - { - Log.LogMessage(MessageImportance.High, $"Failed to find package at '{akaMsUrl}': invalid aka.ms URL"); - return null; - } - closestUrl = redirectResponse.Headers.Location!.ToString(); - closestVersion = VersionIdentifier.GetVersion(closestUrl); - return closestUrl; - } - - public override async Task GetClosestOfficialArchiveVersion() - { - if (closestUrl is not null) - { - return closestVersion; - } - _ = await GetClosestOfficialArchiveUrl(); - return closestVersion; - } -} diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/GetValidArchiveItems.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/GetValidArchiveItems.cs deleted file mode 100644 index bd27213b80b3..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/GetValidArchiveItems.cs +++ /dev/null @@ -1,57 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections.Generic; -using System.IO; -using Microsoft.Build.Framework; - -public class GetValidArchiveItems : Microsoft.Build.Utilities.Task -{ - [Required] - public required ITaskItem[] ArchiveItems { get; init; } - - [Required] - public required string ArchiveName { get; init; } - - [Output] - public ITaskItem[] ValidArchiveItems { get; set; } = []; - - public override bool Execute() - { - List archiveItems = new(); - foreach (var item in ArchiveItems) - { - var filename = Path.GetFileName(item.ItemSpec); - try - { - // Ensure the version and RID info can be parsed from the item - _ = Archive.GetInfoFromFileName(filename, ArchiveName); - archiveItems.Add(item); - } - catch (ArgumentException e) - { - Log.LogMessage($"'{item.ItemSpec}' is not a valid archive name: '{e.Message}'"); - continue; - } - } - switch (archiveItems.Count) - { - case 0: - Log.LogMessage(MessageImportance.High, "No valid archive items found"); - ValidArchiveItems = []; - return false; - case 1: - Log.LogMessage(MessageImportance.High, $"{archiveItems[0]} is the only valid archive item found"); - ValidArchiveItems = archiveItems.ToArray(); - break; - default: - archiveItems.Sort((a, b) => a.ItemSpec.Length - b.ItemSpec.Length); - Log.LogMessage(MessageImportance.High, $"Multiple valid archive items found: '{string.Join("', '", archiveItems)}'"); - ValidArchiveItems = archiveItems.ToArray(); - break; - } - return true; - } - -} diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff.csproj b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff.csproj deleted file mode 100644 index ff3bf2402a01..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - - $(NetCurrent) - enable - - - - - - - diff --git a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/VersionIdentifier.cs b/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/VersionIdentifier.cs deleted file mode 100644 index 38a3eafa8c79..000000000000 --- a/src/SourceBuild/content/eng/tools/tasks/Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff/VersionIdentifier.cs +++ /dev/null @@ -1,257 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -// Copied from https://github.com/dotnet/arcade/blob/db45698020f58f88eef75b23b2598a59872918f6/src/Microsoft.DotNet.VersionTools/lib/src/BuildManifest/VersionIdentifier.cs -// Conflicting MSBuild versions and some customizations make it difficult to use the Arcade assembly. -public static class VersionIdentifier -{ - private static readonly HashSet _knownTags = new HashSet - { - "alpha", - "beta", - "preview", - "prerelease", - "servicing", - "rtm", - "rc" - }; - - private static readonly SortedDictionary _sequencesToReplace = - new SortedDictionary - { - { "-.", "." }, - { "..", "." }, - { "--", "-" }, - { "//", "/" }, - { "_.", "." } - }; - - private const string _finalSuffix = "final"; - - private static readonly char[] _delimiters = new char[] { '.', '-', '_' }; - - /// - /// Identify the version of an asset. - /// - /// Asset names can come in two forms: - /// - Blobs that include the full path - /// - Packages that do not include any path elements. - /// - /// There may be multiple different version numbers in a blob path. - /// This method starts at the last segment of the path and works backward to find a version number. - /// - /// Asset name - /// Version, or null if none is found. - public static string? GetVersion(string assetName) - { - string[] pathSegments = assetName.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); - string? potentialVersion = null; - for (int i = pathSegments.Length - 1; i >= 0; i--) - { - potentialVersion = GetVersionForSingleSegment(pathSegments[i]); - if (potentialVersion != null) - { - return potentialVersion; - } - } - - return potentialVersion; - } - - /// - /// Identify the version number of an asset segment. - /// - /// Asset segment - /// Version number, or null if none was found - /// - /// Identifying versions is not particularly easy. To constrain the problem, - /// we apply the following assumptions which are generally valid for .NET Core. - /// - We always have major.minor.patch, and it always begins the version string. - /// - The only pre-release or build metadata labels we use begin with the _knownTags shown above. - /// - We use additional numbers in our version numbers after the initial - /// major.minor.patch-prereleaselabel.prereleaseiteration segment, - /// but any non-numeric element will end the version string. - /// - The we use in versions and file names are ., -, and _. - /// - private static string? GetVersionForSingleSegment(string assetPathSegment) - { - - // Find the start of the version number by finding the major.minor.patch. - // Scan the string forward looking for a digit preceded by one of the delimiters, - // then look for a minor.patch, completing the major.minor.patch. Continue to do so until we get - // to something that is NOT major.minor.patch (this is necessary because we sometimes see things like: - // VS.Redist.Common.NetCore.Templates.x86.2.2.3.0.101-servicing-014320.nupkg - // Continue iterating until we find ALL potential versions. Return the one that is the latest in the segment - // This is to deal with files with multiple major.minor.patchs in the file name, for example: - // Microsoft.NET.Workload.Mono.ToolChain.Manifest-6.0.100.Msi.x64.6.0.0-rc.1.21380.2.symbols.nupkg - - int currentIndex = 0; - // Stack of major.minor.patch. - Stack<(int versionNumber, int index)> majorMinorPatchStack = new Stack<(int, int)>(3); - string? majorMinorPatch = null; - int majorMinorPatchIndex = 0; - StringBuilder versionSuffix = new StringBuilder(); - char prevDelimiterCharacter = char.MinValue; - char nextDelimiterCharacter = char.MinValue; - Dictionary majorMinorPatchDictionary = new Dictionary(); - while (true) - { - string nextSegment; - prevDelimiterCharacter = nextDelimiterCharacter; - int nextDelimiterIndex = assetPathSegment.IndexOfAny(_delimiters, currentIndex); - if (nextDelimiterIndex != -1) - { - nextDelimiterCharacter = assetPathSegment[nextDelimiterIndex]; - nextSegment = assetPathSegment.Substring(currentIndex, nextDelimiterIndex - currentIndex); - } - else - { - nextSegment = assetPathSegment.Substring(currentIndex); - } - - // If we have not yet found the major/minor/patch, then there are four cases: - // - There have been no potential major/minor/patch numbers found and the current segment is a number. Push onto the majorMinorPatch stack - // and continue. - // - There has been at least one number found, but less than 3, and the current segment not a number or not preceded by '.'. In this case, - // we should clear out the stack and continue the search. - // - There have been at least 2 numbers found and the current segment is a number and preceded by '.'. Push onto the majorMinorPatch stack and continue - // - There have been at least 3 numbers found and the current segment is not a number or not preceded by '-'. In this case, we can call this the major minor - // patch number and no longer need to continue searching - if (majorMinorPatch == null) - { - bool isNumber = int.TryParse(nextSegment, out int potentialVersionSegment); - if ((majorMinorPatchStack.Count == 0 && isNumber) || - (majorMinorPatchStack.Count > 0 && prevDelimiterCharacter == '.' && isNumber)) - { - majorMinorPatchStack.Push((potentialVersionSegment, currentIndex)); - } - // Check for partial major.minor.patch cases, like: 2.2.bar or 2.2-100.bleh - else if (majorMinorPatchStack.Count > 0 && majorMinorPatchStack.Count < 3 && - (prevDelimiterCharacter != '.' || !isNumber)) - { - majorMinorPatchStack.Clear(); - } - - // Determine whether we are done with major.minor.patch after this update. - if (majorMinorPatchStack.Count >= 3 && (prevDelimiterCharacter != '.' || !isNumber || nextDelimiterIndex == -1)) - { - // Done with major.minor.patch, found. Pop the top 3 elements off the stack. - (int patch, int patchIndex) = majorMinorPatchStack.Pop(); - (int minor, int minorIndex) = majorMinorPatchStack.Pop(); - (int major, int majorIndex) = majorMinorPatchStack.Pop(); - majorMinorPatch = $"{major}.{minor}.{patch}"; - majorMinorPatchIndex = majorIndex; - } - } - - // Don't use else, so that we don't miss segments - // in case we are just deciding that we've finished major minor patch. - if (majorMinorPatch != null) - { - // Now look at the next segment. If it looks like it could be part of a version, append to what we have - // and continue. If it can't, then we're done. - // - // Cases where we should break out and be done: - // - We have an empty pre-release label and the delimiter is not '-'. - // - We have an empty pre-release label and the next segment does not start with a known tag. - // - We have a non-empty pre-release label and the current segment is not a number and also not 'final' - // A corner case of versioning uses .final to represent a non-date suffixed final pre-release version: - // 3.1.0-preview.10.final - if (versionSuffix.Length == 0 && - (prevDelimiterCharacter != '-' || !_knownTags.Any(tag => nextSegment.StartsWith(tag, StringComparison.OrdinalIgnoreCase)))) - { - majorMinorPatchDictionary.Add(majorMinorPatchIndex, majorMinorPatch); - majorMinorPatch = null; - versionSuffix = new StringBuilder(); - } - else if (versionSuffix.Length != 0 && !int.TryParse(nextSegment, out int potentialVersionSegment) && nextSegment != _finalSuffix) - { - majorMinorPatchDictionary.Add(majorMinorPatchIndex, $"{majorMinorPatch}{versionSuffix.ToString()}"); - majorMinorPatch = null; - versionSuffix = new StringBuilder(); - } - else - { - // Append the delimiter character and then the current segment - versionSuffix.Append(prevDelimiterCharacter); - versionSuffix.Append(nextSegment); - } - } - - if (nextDelimiterIndex != -1) - { - currentIndex = nextDelimiterIndex + 1; - } - else - { - break; - } - } - - if (majorMinorPatch != null) - { - majorMinorPatchDictionary.Add(majorMinorPatchIndex, $"{majorMinorPatch}{versionSuffix.ToString()}"); - } - - if (!majorMinorPatchDictionary.Any()) - { - return null; - } - - int maxKey = majorMinorPatchDictionary.Keys.Max(); - return majorMinorPatchDictionary[maxKey]; - } - - /// - /// Given an asset name, remove all .NET Core version numbers (as defined by GetVersionForSingleSegment) - /// from the string - /// - /// Asset - /// Asset name without versions - public static string RemoveVersions(string assetName, string replacement = "") - { - string[] pathSegments = assetName.Split('/', '\\'); - - // Remove the version number from each segment, then join back together and - // remove any useless character sequences. - - for (int i = 0; i < pathSegments.Length; i++) - { - if (!string.IsNullOrEmpty(pathSegments[i])) - { - string? versionForSegment = GetVersionForSingleSegment(pathSegments[i]); - if (versionForSegment != null) - { - pathSegments[i] = pathSegments[i].Replace(versionForSegment, replacement); - } - } - } - - // Continue replacing things until there is nothing left to replace. - string assetWithoutVersions = string.Join("/", pathSegments); - bool anyReplacements = true; - while (anyReplacements) - { - string replacementIterationResult = assetWithoutVersions; - foreach (var sequence in _sequencesToReplace) - { - replacementIterationResult = replacementIterationResult.Replace(sequence.Key, sequence.Value); - } - anyReplacements = replacementIterationResult != assetWithoutVersions; - assetWithoutVersions = replacementIterationResult; - } - - return assetWithoutVersions; - } - - - public static bool AreVersionlessEqual(string assetName1, string assetName2) - { - return RemoveVersions(assetName1, "{VERSION}") == RemoveVersions(assetName2, "{VERSION}"); - } -} diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index 9103da84d61a..7e1f585598b6 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -1,8 +1,5 @@ - - - $([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'test', 'Microsoft.DotNet.UnifiedBuild.Tests')) $([MSBuild]::NormalizeDirectory('$(UnifiedBuildValidationTestsDir)', 'Microsoft.DotNet.UnifiedBuild.Tests')) @@ -14,39 +11,15 @@ %(SdkTarballItem.Identity) - normal - - - - - - - - - - - - - <_BuiltSdkArchivePath>@(_BuiltSdkArchivePath) - - - diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/BaselineHelper.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/BaselineHelper.cs index 4beb6245a0c7..5451559e4958 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/BaselineHelper.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/BaselineHelper.cs @@ -44,6 +44,8 @@ public static void CompareEntries(string baselineFileName, IOrderedEnumerable Path.Combine(GetAssetsDirectory(), "baselines", baselineSubDir, baselineFileName); - public static string RemoveRids(string diff, bool isPortable = false) => - isPortable ? diff.Replace(Config.PortableRid, "portable-rid") : diff.Replace(Config.TargetRid, "banana-rid"); + public static string RemoveRids(string diff, string portableRid, string targetRid, bool isPortable = false) => + isPortable ? diff.Replace(portableRid, "portable-rid") : diff.Replace(targetRid, "banana-rid"); public static string RemoveVersions(string source) { @@ -100,7 +102,7 @@ public static string RemoveVersions(string source) string result = Regex.Replace(source, $@"{pathSeparator}(net|roslyn)[1-9]+\.[0-9]+{pathSeparator}", match => { string wordPart = match.Groups[1].Value; - return $"{Path.DirectorySeparatorChar}{wordPart}{NonSemanticVersionPlaceholder}{Path.DirectorySeparatorChar}"; + return $"{'/'}{wordPart}{NonSemanticVersionPlaceholder}{'/'}"; }); // Remove semantic versions diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs index 25aff9d34363..ef4fd0e6ebd7 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs @@ -4,46 +4,78 @@ using System; using System.IO; +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; namespace Microsoft.DotNet.SourceBuild.SmokeTests; -internal static class Config +public class Config : IDisposable { - public const string DotNetDirectoryEnv = "UNIFIED_BUILD_VALIDATION_DOTNET_DIR"; - public const string IncludeArtifactsSizeEnv = "UNIFIED_BUILD_VALIDATION_INCLUDE_ARTIFACTSSIZE"; + public Config() + { + BuildVersion = Environment.GetEnvironmentVariable(BuildVersionEnv) ?? throw new InvalidOperationException($"'{BuildVersionEnv}' must be specified"); + PortableRid = Environment.GetEnvironmentVariable(PortableRidEnv) ?? throw new InvalidOperationException($"'{PortableRidEnv}' must be specified"); + UbSdkArchivePath = Environment.GetEnvironmentVariable(UbSdkTarballPathEnv) ?? throw new InvalidOperationException($"'{UbSdkTarballPathEnv}' must be specified"); + TargetRid = Environment.GetEnvironmentVariable(TargetRidEnv) ?? throw new InvalidOperationException($"'{TargetRidEnv}' must be specified"); + TargetArchitecture = TargetRid.Split('-')[1]; + WarnOnSdkContentDiffs = bool.TryParse(Environment.GetEnvironmentVariable(WarnSdkContentDiffsEnv), out bool warnOnSdkContentDiffs) && warnOnSdkContentDiffs; + MsftSdkArchivePath = Environment.GetEnvironmentVariable(MsftSdkTarballPathEnv) ?? DownloadMsftSdkArchive().Result; + } + + public const string BuildVersionEnv = "UNIFIED_BUILD_VALIDATION_BUILD_VERSION"; public const string MsftSdkTarballPathEnv = "UNIFIED_BUILD_VALIDATION_MSFT_SDK_TARBALL_PATH"; - public const string PoisonReportPathEnv = "UNIFIED_BUILD_VALIDATION_POISON_REPORT_PATH"; public const string PortableRidEnv = "UNIFIED_BUILD_VALIDATION_PORTABLE_RID"; public const string PrereqsPathEnv = "UNIFIED_BUILD_VALIDATION_PREREQS_PATH"; - public const string CustomPackagesPathEnv = "UNIFIED_BUILD_VALIDATION_CUSTOM_PACKAGES_PATH"; - public const string SdkTarballPathEnv = "UNIFIED_BUILD_VALIDATION_SDK_TARBALL_PATH"; + public const string UbSdkTarballPathEnv = "UNIFIED_BUILD_VALIDATION_SDK_TARBALL_PATH"; public const string SourceBuiltArtifactsPathEnv = "UNIFIED_BUILD_VALIDATION_SOURCEBUILT_ARTIFACTS_PATH"; public const string TargetRidEnv = "UNIFIED_BUILD_VALIDATION_TARGET_RID"; public const string WarnSdkContentDiffsEnv = "UNIFIED_BUILD_VALIDATION_WARN_SDK_CONTENT_DIFFS"; - public const string WarnLicenseScanDiffsEnv = "UNIFIED_BUILD_VALIDATION_WARN_LICENSE_SCAN_DIFFS"; - public const string RunningInCIEnv = "UNIFIED_BUILD_VALIDATION_RUNNING_IN_CI"; - public const string LicenseScanPathEnv = "UNIFIED_BUILD_VALIDATION_LICENSE_SCAN_PATH"; - public static string DotNetDirectory { get; } = - Environment.GetEnvironmentVariable(DotNetDirectoryEnv) ?? Path.Combine(Directory.GetCurrentDirectory(), ".dotnet"); - public static string? MsftSdkTarballPath { get; } = Environment.GetEnvironmentVariable(MsftSdkTarballPathEnv); - public static string PortableRid { get; } = Environment.GetEnvironmentVariable(PortableRidEnv) ?? - throw new InvalidOperationException($"'{Config.PortableRidEnv}' must be specified"); - public static string? PrereqsPath { get; } = Environment.GetEnvironmentVariable(PrereqsPathEnv); - public static string? CustomPackagesPath { get; } = Environment.GetEnvironmentVariable(CustomPackagesPathEnv); - public static string? SdkTarballPath { get; } = Environment.GetEnvironmentVariable(SdkTarballPathEnv); - public static string? SourceBuiltArtifactsPath { get; } = Environment.GetEnvironmentVariable(SourceBuiltArtifactsPathEnv); - public static string TargetRid { get; } = Environment.GetEnvironmentVariable(TargetRidEnv) ?? - throw new InvalidOperationException($"'{Config.TargetRidEnv}' must be specified"); - public static string TargetArchitecture { get; } = TargetRid.Split('-')[1]; - public static bool WarnOnSdkContentDiffs { get; } = - bool.TryParse(Environment.GetEnvironmentVariable(WarnSdkContentDiffsEnv), out bool warnOnSdkContentDiffs) && warnOnSdkContentDiffs; - public static bool WarnOnLicenseScanDiffs { get; } = - bool.TryParse(Environment.GetEnvironmentVariable(WarnLicenseScanDiffsEnv), out bool warnOnLicenseScanDiffs) && warnOnLicenseScanDiffs; + public string? MsftSdkArchivePath { get; } + public string BuildVersion { get; } + public string PortableRid { get; } + public string UbSdkArchivePath { get; } + public string TargetRid { get; } + public string TargetArchitecture { get; } + public bool WarnOnSdkContentDiffs { get; } + string? _downloadedMsftSdkPath = null; - // Indicates whether the tests are being run in the context of a CI pipeline - public static bool RunningInCI { get; } = - bool.TryParse(Environment.GetEnvironmentVariable(RunningInCIEnv), out bool runningInCI) && runningInCI; + static string GetArchiveExtension(string path) + { + if (path.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)) + return ".zip"; + if (path.EndsWith(".tar.gz", StringComparison.InvariantCultureIgnoreCase)) + return ".tar.gz"; + throw new InvalidOperationException($"Path does not have a valid archive extenions: '{path}'"); + } - public static string? LicenseScanPath { get; } = Environment.GetEnvironmentVariable(LicenseScanPathEnv); + public async Task DownloadMsftSdkArchive() + { + var client = new HttpClient(new HttpClientHandler() { AllowAutoRedirect = false }); + var channel = BuildVersion[..5] + "xx"; + var akaMsUrl = $"https://aka.ms/dotnet/{channel}/daily/dotnet-sdk-{TargetRid}{GetArchiveExtension(UbSdkArchivePath)}"; + var redirectResponse = await client.GetAsync(akaMsUrl); + // aka.ms returns a 301 for valid redirects and a 302 to Bing for invalid URLs + if (redirectResponse.StatusCode != HttpStatusCode.Moved) + { + throw new InvalidOperationException($"Could not find download link for Microsoft built sdk at '{akaMsUrl}'"); + } + var closestUrl = redirectResponse.Headers.Location!.ToString(); + HttpResponseMessage packageResponse = await client.GetAsync(closestUrl); + var packageUriPath = packageResponse.RequestMessage!.RequestUri!.LocalPath; + _downloadedMsftSdkPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName() + "." + Path.GetFileName(packageUriPath)); + using (var file = File.Create(_downloadedMsftSdkPath)) + { + await packageResponse.Content.CopyToAsync(file); + } + return _downloadedMsftSdkPath; + } + public void Dispose() + { + if (_downloadedMsftSdkPath != null) + { + File.Delete(_downloadedMsftSdkPath); + } + } } diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetHelper.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetHelper.cs deleted file mode 100644 index c662eaf7647b..000000000000 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetHelper.cs +++ /dev/null @@ -1,341 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Net; -using System.Net.Http; -using System.Net.Sockets; -using Xunit; -using Xunit.Abstractions; - -namespace Microsoft.DotNet.SourceBuild.SmokeTests; - -internal class DotNetHelper -{ - private static readonly object s_lockObj = new(); - - public static string DotNetPath { get; } = Path.Combine(Config.DotNetDirectory, "dotnet"); - public static string PackagesDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), "packages"); - public static string ProjectsDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), $"projects-{DateTime.Now:yyyyMMddHHmmssffff}"); - - private ITestOutputHelper OutputHelper { get; } - public bool IsMonoRuntime { get; } - - public DotNetHelper(ITestOutputHelper outputHelper) - { - OutputHelper = outputHelper; - - lock (s_lockObj) - { - if (!Directory.Exists(Config.DotNetDirectory)) - { - if (!File.Exists(Config.SdkTarballPath)) - { - throw new InvalidOperationException($"Tarball path '{Config.SdkTarballPath}' specified in {Config.SdkTarballPath} does not exist."); - } - - Directory.CreateDirectory(Config.DotNetDirectory); - Utilities.ExtractTarball(Config.SdkTarballPath, Config.DotNetDirectory, outputHelper); - } - IsMonoRuntime = DetermineIsMonoRuntime(Config.DotNetDirectory); - - // if (!Directory.Exists(ProjectsDirectory)) - // { - // Directory.CreateDirectory(ProjectsDirectory); - // InitNugetConfig(); - // } - - // if (!Directory.Exists(PackagesDirectory)) - // { - // Directory.CreateDirectory(PackagesDirectory); - // } - } - } - - private static void InitNugetConfig() - { - bool useLocalPackages = !string.IsNullOrEmpty(Config.PrereqsPath); - string nugetConfigPrefix = useLocalPackages ? "local" : "online"; - string nugetConfigPath = Path.Combine(ProjectsDirectory, "NuGet.Config"); - File.Copy( - Path.Combine(BaselineHelper.GetAssetsDirectory(), $"{nugetConfigPrefix}.NuGet.Config"), - nugetConfigPath); - - if (useLocalPackages) - { - // When using local packages this feed is always required. It contains packages that are - // not produced by source-build but are required by the various project templates. - if (!Directory.Exists(Config.PrereqsPath)) - { - throw new InvalidOperationException( - $"Prereqs path '{Config.PrereqsPath}' specified in {Config.PrereqsPathEnv} does not exist."); - } - - string nugetConfig = File.ReadAllText(nugetConfigPath); - nugetConfig = nugetConfig.Replace("SMOKE_TEST_PACKAGE_FEED", Config.PrereqsPath); - - // This package feed is optional. You can use an additional feed of source-built packages to run the - // smoke-tests as offline as possible. - if (Config.CustomPackagesPath != null) - { - if (!Directory.Exists(Config.CustomPackagesPath)) - { - throw new ArgumentException($"Specified --with-packages {Config.CustomPackagesPath} does not exist."); - } - nugetConfig = nugetConfig.Replace("CUSTOM_PACKAGE_FEED", Config.CustomPackagesPath); - } - else - { - nugetConfig = string.Join(Environment.NewLine, nugetConfig.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Where(s => !s.Contains("CUSTOM_PACKAGE_FEED")).ToArray()); - } - File.WriteAllText(nugetConfigPath, nugetConfig); - } - } - - public void ExecuteCmd(string args, string? workingDirectory = null, Action? processConfigCallback = null, - int? expectedExitCode = 0, int millisecondTimeout = -1) - { - (Process Process, string StdOut, string StdErr) executeResult = ExecuteHelper.ExecuteProcess( - DotNetPath, - args, - OutputHelper, - configureCallback: (process) => configureProcess(process, workingDirectory), - millisecondTimeout: millisecondTimeout); - - if (expectedExitCode != null) { - ExecuteHelper.ValidateExitCode(executeResult, (int) expectedExitCode); - } - - void configureProcess(Process process, string? workingDirectory) - { - ConfigureProcess(process, workingDirectory); - - processConfigCallback?.Invoke(process); - } - } - - public static void ConfigureProcess(Process process, string? workingDirectory) - { - if (workingDirectory != null) - { - process.StartInfo.WorkingDirectory = workingDirectory; - } - - process.StartInfo.EnvironmentVariables["DOTNET_CLI_TELEMETRY_OPTOUT"] = "1"; - process.StartInfo.EnvironmentVariables["DOTNET_SKIP_FIRST_TIME_EXPERIENCE"] = "1"; - process.StartInfo.EnvironmentVariables["DOTNET_ROOT"] = Config.DotNetDirectory; - process.StartInfo.EnvironmentVariables["NUGET_PACKAGES"] = PackagesDirectory; - process.StartInfo.EnvironmentVariables["PATH"] = $"{Config.DotNetDirectory}:{Environment.GetEnvironmentVariable("PATH")}"; - } - - public void ExecuteBuild(string projectName) => - ExecuteCmd($"build {GetBinLogOption(projectName, "build")}", GetProjectDirectory(projectName)); - - /// - /// Create a new .NET project and return the path to the created project folder. - /// - public string ExecuteNew(string projectType, string name, string? language = null, string? customArgs = null) - { - string projectDirectory = GetProjectDirectory(name); - string options = $"--name {name} --output {projectDirectory}"; - if (language != null) - { - options += $" --language \"{language}\""; - } - if (string.IsNullOrEmpty(customArgs)) - { - options += $" {customArgs}"; - } - - ExecuteCmd($"new {projectType} {options}"); - - return projectDirectory; - } - - public void ExecutePublish(string projectName, DotNetTemplate template, bool? selfContained = null, string? rid = null, bool trimmed = false, bool readyToRun = false) - { - string options = string.Empty; - string binlogDifferentiator = string.Empty; - - if (selfContained.HasValue) - { - options += $"--self-contained {selfContained.Value.ToString().ToLowerInvariant()}"; - if (selfContained.Value) - { - binlogDifferentiator += "self-contained"; - if (!string.IsNullOrEmpty(rid)) - { - options += $" -r {rid}"; - binlogDifferentiator += $"-{rid}"; - } - if (trimmed) - { - options += " /p:PublishTrimmed=true"; - binlogDifferentiator += "-trimmed"; - } - if (readyToRun) - { - options += " /p:PublishReadyToRun=true"; - binlogDifferentiator += "-R2R"; - } - } - } - - string projDir = GetProjectDirectory(projectName); - string publishDir = Path.Combine(projDir, "bin", "publish"); - - ExecuteCmd( - $"publish {options} {GetBinLogOption(projectName, "publish", binlogDifferentiator)} -o {publishDir}", - projDir); - - if (template == DotNetTemplate.Console) - { - ExecuteCmd($"{projectName}.dll", publishDir, expectedExitCode: 0); - } - else if (template == DotNetTemplate.ClassLib || template == DotNetTemplate.BlazorWasm) - { - // Can't run the published output of classlib (no entrypoint) or WASM (needs a server) - } - // Assume it is a web-based template - else - { - ExecuteWebDll(projectName, publishDir, template); - } - } - - public void ExecuteRun(string projectName) => - ExecuteCmd($"run {GetBinLogOption(projectName, "run")}", GetProjectDirectory(projectName)); - - public void ExecuteRunWeb(string projectName, DotNetTemplate template) - { - // 'dotnet run' exit code differs between CoreCLR and Mono (https://github.com/dotnet/sdk/issues/30095). - int expectedExitCode = IsMonoRuntime ? 143 : 0; - - ExecuteWeb( - projectName, - $"run --no-launch-profile {GetBinLogOption(projectName, "run")}", - GetProjectDirectory(projectName), - template, - expectedExitCode); - } - - public void ExecuteWebDll(string projectName, string workingDirectory, DotNetTemplate template) => - ExecuteWeb(projectName, $"{projectName}.dll", workingDirectory, template, expectedExitCode: 0); - - public void ExecuteTest(string projectName) => - ExecuteCmd($"test {GetBinLogOption(projectName, "test")}", GetProjectDirectory(projectName)); - - private void ExecuteWeb(string projectName, string args, string workingDirectory, DotNetTemplate template, int expectedExitCode) - { - WebAppValidator validator = new(OutputHelper, template); - ExecuteCmd( - args, - workingDirectory, - processConfigCallback: validator.Validate, - expectedExitCode: expectedExitCode, - millisecondTimeout: 30000); - Assert.True(validator.IsValidated); - if (validator.ValidationException is not null) - { - throw validator.ValidationException; - } - } - - private static string GetBinLogOption(string projectName, string command, string? differentiator = null) - { - string fileName = $"{projectName}-{command}"; - if (!string.IsNullOrEmpty(differentiator)) - { - fileName += $"-{differentiator}"; - } - - return $"/bl:{Path.Combine(TestBase.LogsDirectory, $"{fileName}.binlog")}"; - } - - private static bool DetermineIsMonoRuntime(string dotnetRoot) - { - string sharedFrameworkRoot = Path.Combine(dotnetRoot, "shared", "Microsoft.NETCore.App"); - if (!Directory.Exists(sharedFrameworkRoot)) - { - return false; - } - - string? version = Directory.GetDirectories(sharedFrameworkRoot).FirstOrDefault(); - if (version is null) - { - return false; - } - - string sharedFramework = Path.Combine(sharedFrameworkRoot, version); - - // Check the presence of one of the mono header files. - return File.Exists(Path.Combine(sharedFramework, "mono-gc.h")); - } - - private static string GetProjectDirectory(string projectName) => Path.Combine(ProjectsDirectory, projectName); - - public static bool ShouldPublishComplex() => - !string.Equals(Config.TargetArchitecture,"ppc64le") && !string.Equals(Config.TargetArchitecture,"s390x"); - - private class WebAppValidator - { - private readonly ITestOutputHelper _outputHelper; - private readonly DotNetTemplate _template; - - public WebAppValidator(ITestOutputHelper outputHelper, DotNetTemplate template) - { - _outputHelper = outputHelper; - _template = template; - } - - public bool IsValidated { get; set; } - public Exception? ValidationException { get; set; } - - private static int GetAvailablePort() - { - TcpListener listener = new(IPAddress.Loopback, 0); - listener.Start(); - int port = ((IPEndPoint)listener.LocalEndpoint).Port; - listener.Stop(); - return port; - } - - public void Validate(Process process) - { - int port = GetAvailablePort(); - process.StartInfo.EnvironmentVariables.Add("ASPNETCORE_HTTP_PORTS", port.ToString()); - process.OutputDataReceived += new DataReceivedEventHandler((sender, e) => - { - try - { - if (e.Data?.Contains("Application started. Press Ctrl+C to shut down.") ?? false) - { - _outputHelper.WriteLine("Detected app has started. Sending web request to validate..."); - - using HttpClient httpClient = new(); - string url = $"http://localhost:{port}"; - if (_template == DotNetTemplate.WebApi) - { - url += "/WeatherForecast"; - } - - using HttpResponseMessage resultMsg = httpClient.GetAsync(new Uri(url)).Result; - _outputHelper.WriteLine($"Status code returned: {resultMsg.StatusCode}"); - resultMsg.EnsureSuccessStatusCode(); - IsValidated = true; - - ExecuteHelper.ExecuteProcessValidateExitCode("kill", $"-s TERM {process.Id}", _outputHelper); - } - } - catch (Exception ex) - { - ValidationException = ex; - } - }); - } - } -} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetTemplate.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetTemplate.cs deleted file mode 100644 index 0a30c7215631..000000000000 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/DotNetTemplate.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace Microsoft.DotNet.SourceBuild.SmokeTests; - -public enum DotNetTemplate -{ - Console, - ClassLib, - XUnit, - NUnit, - MSTest, - Web, - Mvc, - Razor, - BlazorWasm, - WebApi, - WebApp, - Worker, -} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Exclusions.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Exclusions.cs index 63c58dafde43..b56cc2f342c8 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Exclusions.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Exclusions.cs @@ -12,7 +12,15 @@ public class Exclusions { - string _rid = Config.TargetRid; + public const string UbPrefix = "ub"; + public const string MsftPrefix = "msft"; + + public Exclusions(string rid) + { + _rid = rid; + } + + string _rid; string[] GetRidSpecificExclusionFileNames(string path) { @@ -30,17 +38,42 @@ string[] GetRidSpecificExclusionFileNames(string path) return fileNames; } + public IEnumerable RemoveContentDiffFileExclusions(IEnumerable files, string? prefix = null) + { + var exclusions = GetFileExclusions(prefix); + Func condition = f => !IsFileExcluded(f, exclusions, prefix); + return files.Where(condition); + } + + public IEnumerable RemoveAssemblyVersionFileExclusions(IEnumerable files, string? prefix = null) + { + var exclusions = GetFileExclusions(prefix).Concat(GetNativeDllExclusions(prefix)).Concat(GetAssemblyVersionExclusions(prefix)); + Func condition = f => !IsFileExcluded(f, exclusions, prefix); + return files.Where(condition); + } + + //public List UbFileExclusions => _ubFileExclusions ??= GetFileExclusions(UbPrefix); + //List? _ubFileExclusions = null; + + //public List UbAssemblyVersionExclusions => _ubAssemblyVersionExclusions ??= UbFileExclusions.Concat(GetAssemblyVersionExclusions(UbPrefix)).Concat(GetNativeDllExclusions(UbPrefix)).ToList(); + //List? _ubAssemblyVersionExclusions = null; + + //public List MsftFileExclusions => _msftFileExclusions ??= GetFileExclusions(MsftPrefix); + //List? _msftFileExclusions = null; + + //public List MsftAssemblyVersionExclusions => _msftAssemblyVersionExclusions ??= MsftFileExclusions.Concat(GetAssemblyVersionExclusions(MsftPrefix)).Concat(GetNativeDllExclusions(MsftPrefix)).ToList(); + //List? _msftAssemblyVersionExclusions = null; + public List GetFileExclusions(string? prefix = null) => GetRidSpecificExclusionFileNames("SdkFileDiffExclusions.txt").SelectMany(f => Utilities.TryParseExclusionsFile(f, prefix)).ToList(); public List GetAssemblyVersionExclusions(string? prefix = null) => GetRidSpecificExclusionFileNames("SdkAssemblyVersionDiffExclusions.txt").SelectMany(f => Utilities.TryParseExclusionsFile(f, prefix)).ToList(); public List GetNativeDllExclusions(string? prefix = null) => GetRidSpecificExclusionFileNames("NativeDlls.txt").SelectMany(f => Utilities.TryParseExclusionsFile(f, prefix)).ToList(); public string GetBaselineFileDiffFileName() => GetRidSpecificExclusionFileNames("MsftToSbSdkFiles.diff").Last(); - - string NormalizePath(string path) + static string NormalizePath(string path) { return path.Replace('\\', '/'); } - bool IsFileExcluded(string file, string? prefix = null) - => GetFileExclusions(prefix).Any(exclusion => FileSystemName.MatchesSimpleExpression(exclusion, NormalizePath(file))); + public bool IsFileExcluded(string file, IEnumerable exclusions, string? prefix = null) + => exclusions.Any(exclusion => FileSystemName.MatchesSimpleExpression(exclusion, NormalizePath(file))); } diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs index d4bfa6ceb6d5..4456fdb6a782 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs @@ -19,12 +19,13 @@ namespace Microsoft.DotNet.SourceBuild.SmokeTests; [Trait("Category", "SdkContent")] -public class SdkContentTests : SdkTests +public class SdkContentTests : TestBase { - private const string MsftSdkType = "msft"; - private const string SourceBuildSdkType = "sb"; - - public SdkContentTests(ITestOutputHelper outputHelper) : base(outputHelper) { } + Exclusions Exclusions; + public SdkContentTests(ITestOutputHelper outputHelper, Config config) : base(outputHelper, config) + { + Exclusions = new(Config.TargetRid); + } /// /// Verifies the file layout of the source built sdk tarball to the Microsoft build. @@ -33,39 +34,39 @@ public SdkContentTests(ITestOutputHelper outputHelper) : base(outputHelper) { } /// This makes the baseline durable between releases. This does mean however, entries /// in the baseline may appear identical if the diff is version specific. /// - [SkippableFact(new[] { Config.MsftSdkTarballPathEnv, Config.SdkTarballPathEnv }, skipOnNullOrWhiteSpaceEnv: true)] + [Fact] public void CompareMsftToSbFileList() { const string msftFileListingFileName = "msftSdkFiles.txt"; const string sbFileListingFileName = "sbSdkFiles.txt"; - WriteTarballFileList(Config.MsftSdkTarballPath, msftFileListingFileName, isPortable: true, MsftSdkType); - WriteTarballFileList(Config.SdkTarballPath, sbFileListingFileName, isPortable: true, SourceBuildSdkType); + WriteTarballFileList(Config.MsftSdkArchivePath, msftFileListingFileName, isPortable: true, Exclusions.MsftPrefix); + WriteTarballFileList(Config.UbSdkArchivePath, sbFileListingFileName, isPortable: true, Exclusions.UbPrefix); string diff = BaselineHelper.DiffFiles(msftFileListingFileName, sbFileListingFileName, OutputHelper); diff = RemoveDiffMarkers(diff); - BaselineHelper.CompareBaselineContents(new Exclusions().GetBaselineFileDiffFileName(), diff, OutputHelper, Config.WarnOnSdkContentDiffs); + BaselineHelper.CompareBaselineContents(Exclusions.GetBaselineFileDiffFileName(), diff, OutputHelper, Config.WarnOnSdkContentDiffs); } - [SkippableFact(new[] { Config.MsftSdkTarballPathEnv, Config.SdkTarballPathEnv }, skipOnNullOrWhiteSpaceEnv: true)] - public void CompareMsftToSbAssemblyVersions() + [Fact] + public async Task CompareMsftToSbAssemblyVersions() { - Assert.NotNull(Config.MsftSdkTarballPath); - Assert.NotNull(Config.SdkTarballPath); + Assert.NotNull(Config.MsftSdkArchivePath); + Assert.NotNull(Config.UbSdkArchivePath); DirectoryInfo tempDir = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Path.GetRandomFileName())); try { - DirectoryInfo sbSdkDir = Directory.CreateDirectory(Path.Combine(tempDir.FullName, SourceBuildSdkType)); - Utilities.ExtractTarball(Config.SdkTarballPath, sbSdkDir.FullName, OutputHelper); + DirectoryInfo sbSdkDir = Directory.CreateDirectory(Path.Combine(tempDir.FullName, Exclusions.UbPrefix)); + Utilities.ExtractTarball(Config.UbSdkArchivePath, sbSdkDir.FullName, OutputHelper); - DirectoryInfo msftSdkDir = Directory.CreateDirectory(Path.Combine(tempDir.FullName, MsftSdkType)); - Utilities.ExtractTarball(Config.MsftSdkTarballPath, msftSdkDir.FullName, OutputHelper); + DirectoryInfo msftSdkDir = Directory.CreateDirectory(Path.Combine(tempDir.FullName, Exclusions.MsftPrefix)); + Utilities.ExtractTarball(Config.MsftSdkArchivePath, msftSdkDir.FullName, OutputHelper); var t1 = Task.Run(() => GetSdkAssemblyVersions(sbSdkDir.FullName)); var t2 = Task.Run(() => GetSdkAssemblyVersions(msftSdkDir.FullName)); - Task.WaitAll(t1, t2); - Dictionary sbSdkAssemblyVersions = t1.Result; - Dictionary msftSdkAssemblyVersions = t2.Result; + var results = await Task.WhenAll(t1, t2); + Dictionary sbSdkAssemblyVersions = results[0]; + Dictionary msftSdkAssemblyVersions = results[1]; RemoveExcludedAssemblyVersionPaths(sbSdkAssemblyVersions, msftSdkAssemblyVersions); @@ -85,22 +86,22 @@ public void CompareMsftToSbAssemblyVersions() } } - private static void RemoveExcludedAssemblyVersionPaths(Dictionary sbSdkAssemblyVersions, Dictionary msftSdkAssemblyVersions) + private void RemoveExcludedAssemblyVersionPaths(Dictionary sbSdkAssemblyVersions, Dictionary msftSdkAssemblyVersions) { - IEnumerable assemblyVersionDiffFilters = GetSdkAssemblyVersionDiffExclusionFilters() + IEnumerable assemblyVersionDiffFilters = Exclusions.GetAssemblyVersionExclusions() .Select(filter => filter.TrimStart("./".ToCharArray())); // Remove entries that are not in both. If they should be in both, the mismatch will be caught in another test - foreach(var kvp in sbSdkAssemblyVersions) + foreach (var kvp in sbSdkAssemblyVersions) { - if (msftSdkAssemblyVersions.ContainsKey(kvp.Key)) + if (!msftSdkAssemblyVersions.ContainsKey(kvp.Key)) { sbSdkAssemblyVersions.Remove(kvp.Key); } } - foreach(var kvp in msftSdkAssemblyVersions) + foreach (var kvp in msftSdkAssemblyVersions) { - if (sbSdkAssemblyVersions.ContainsKey(kvp.Key)) + if (!sbSdkAssemblyVersions.ContainsKey(kvp.Key)) { msftSdkAssemblyVersions.Remove(kvp.Key); } @@ -145,27 +146,13 @@ private static void WriteAssemblyVersionsToFile(Dictionary ass return null; } - private string FindMatchingFilePath(string rootDir, Matcher matcher, string representativeFile) - { - foreach (string file in Directory.EnumerateFiles(rootDir, "*", SearchOption.AllDirectories)) - { - if (matcher.Match(rootDir, file).HasMatches) - { - return file; - } - } - - Assert.Fail($"Unable to find matching file for '{representativeFile}' in '{rootDir}'."); - return string.Empty; - } - - private Dictionary GetSdkAssemblyVersions(string sbSdkPath) + private Dictionary GetSdkAssemblyVersions(string sbSdkPath, string? prefix = null) { - Exclusions ex = new Exclusions(); - IEnumerable exclusionFilters = GetSdkDiffExclusionFilters(SourceBuildSdkType) - .Concat(GetKnownNativeFiles()) + Exclusions ex = Exclusions; + IEnumerable exclusionFilters = ex.GetFileExclusions(prefix) + .Concat(ex.GetNativeDllExclusions(prefix)) + .Concat(ex.GetAssemblyVersionExclusions(prefix)) .Select(filter => filter.TrimStart("./".ToCharArray())); - List knownNativeFiles = Utilities.ParseExclusionsFile("NativeDlls-win-any.txt").ToList(); ConcurrentDictionary sbSdkAssemblyVersions = new(); List tasks = new List(); foreach (string dir in Directory.EnumerateDirectories(sbSdkPath, "*", SearchOption.AllDirectories).Append(sbSdkPath)) @@ -180,7 +167,7 @@ private string FindMatchingFilePath(string rootDir, Matcher matcher, string repr { string relativePath = Path.GetRelativePath(sbSdkPath, file); string normalizedPath = BaselineHelper.RemoveVersions(relativePath); - if (!Utilities.IsFileExcluded(normalizedPath, exclusionFilters)) + if (!ex.IsFileExcluded(normalizedPath, exclusionFilters)) { try { @@ -197,32 +184,6 @@ private string FindMatchingFilePath(string rootDir, Matcher matcher, string repr }); tasks.Add(t); } - //foreach (string file in Directory.EnumerateFiles(sbSdkPath, "*", SearchOption.AllDirectories)) - //{ - // string fileExt = Path.GetExtension(file); - // if (fileExt.Equals(".dll", StringComparison.OrdinalIgnoreCase) || - // fileExt.Equals(".exe", StringComparison.OrdinalIgnoreCase)) - // { - // string relativePath = Path.GetRelativePath(sbSdkPath, file); - // string normalizedPath = BaselineHelper.RemoveVersions(relativePath); - // if (!Utilities.IsFileExcluded(normalizedPath, exclusionFilters)) - // { - // var t = Task.Run(() => - // { - // try - // { - // AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); - // sbSdkAssemblyVersions.Add(normalizedPath, GetVersion(assemblyName)); - // } - // catch (BadImageFormatException) - // { - // Console.WriteLine($"BadImageFormatException: {file}"); - // } - // }); - // tasks.Add(t); - // } - // } - //} Task.WaitAll(tasks.ToArray()); return sbSdkAssemblyVersions.ToDictionary(); } @@ -235,32 +196,20 @@ private void WriteTarballFileList(string? tarballPath, string outputFileName, bo } string fileListing = Utilities.GetTarballContentNames(tarballPath).Aggregate((a, b) => $"{a}{Environment.NewLine}{b}"); - fileListing = BaselineHelper.RemoveRids(fileListing, isPortable); + fileListing = BaselineHelper.RemoveRids(fileListing, Config.PortableRidEnv, Config.TargetRid, isPortable); fileListing = BaselineHelper.RemoveVersions(fileListing); IEnumerable files = fileListing.Split(Environment.NewLine).OrderBy(path => path); - files = RemoveExclusions(files, GetSdkDiffExclusionFilters(sdkType)); + files = Exclusions.RemoveContentDiffFileExclusions(files, sdkType); File.WriteAllLines(outputFileName, files); } - private static IEnumerable RemoveExclusions(IEnumerable files, IEnumerable exclusions) => - files.Where(item => !Utilities.IsFileExcluded(item, exclusions)); - - private static IEnumerable GetSdkDiffExclusionFilters(string sdkType) => - Utilities.ParseExclusionsFile("SdkFileDiffExclusions.txt", sdkType); - - private static IEnumerable GetSdkAssemblyVersionDiffExclusionFilters() => - Utilities.ParseExclusionsFile("SdkAssemblyVersionDiffExclusions.txt"); - - private static IEnumerable GetKnownNativeFiles() => - Utilities.ParseExclusionsFile("NativeDlls-win-any.txt"); - private static string RemoveDiffMarkers(string source) { Regex indexRegex = new("^index .*", RegexOptions.Multiline); string result = indexRegex.Replace(source, "index ------------"); Regex diffSegmentRegex = new("^@@ .* @@", RegexOptions.Multiline); - return diffSegmentRegex.Replace(result, "@@ ------------ @@"); + return diffSegmentRegex.Replace(result, "@@ ------------ @@").ReplaceLineEndings(); } } diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkTests.cs deleted file mode 100644 index ba3381360ffa..000000000000 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkTests.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Xunit.Abstractions; - -namespace Microsoft.DotNet.SourceBuild.SmokeTests; - -/// -/// Shared base class for all SDK-based smoke tests. -/// -public abstract class SdkTests : TestBase -{ - internal DotNetHelper DotNetHelper { get; } - - protected SdkTests(ITestOutputHelper outputHelper) : base(outputHelper) - { - DotNetHelper = new DotNetHelper(outputHelper); - } -} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SkippableFactAttribute.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SkippableFactAttribute.cs deleted file mode 100644 index c1314e19e8b5..000000000000 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SkippableFactAttribute.cs +++ /dev/null @@ -1,53 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Linq; -using Xunit; - -namespace Microsoft.DotNet.SourceBuild.SmokeTests; - -/// -/// A Fact that will be skipped based on the specified environment variable's value. -/// -internal class SkippableFactAttribute : FactAttribute -{ - public SkippableFactAttribute(string envName, bool skipOnNullOrWhiteSpaceEnv = false, bool skipOnTrueEnv = false, bool skipOnFalseEnv = false, string[] skipArchitectures = null) => - EvaluateSkips(skipOnNullOrWhiteSpaceEnv, skipOnTrueEnv, skipOnFalseEnv, skipArchitectures, (skip) => Skip = skip, envName); - - public SkippableFactAttribute(string[] envNames, bool skipOnNullOrWhiteSpaceEnv = false, bool skipOnTrueEnv = false, bool skipOnFalseEnv = false, string[] skipArchitectures = null) => - EvaluateSkips(skipOnNullOrWhiteSpaceEnv, skipOnTrueEnv, skipOnFalseEnv, skipArchitectures, (skip) => Skip = skip, envNames); - - public static void EvaluateSkips(bool skipOnNullOrWhiteSpaceEnv, bool skipOnTrueEnv, bool skipOnFalseEnv, string[] skipArchitectures, Action setSkip, params string[] envNames) - { - foreach (string envName in envNames) - { - string? envValue = Environment.GetEnvironmentVariable(envName); - - if (skipOnNullOrWhiteSpaceEnv && string.IsNullOrWhiteSpace(envValue)) - { - setSkip($"Skipping because `{envName}` is null or whitespace"); - break; - } - else if (skipOnTrueEnv && bool.TryParse(envValue, out bool boolValue) && boolValue) - { - setSkip($"Skipping because `{envName}` is set to True"); - break; - } - else if (skipOnFalseEnv && (!bool.TryParse(envValue, out boolValue) || !boolValue)) - { - setSkip($"Skipping because `{envName}` is set to False or an invalid value"); - break; - } - } - - if (skipArchitectures != null) { - string? arch = Config.TargetArchitecture; - if (skipArchitectures.Contains(arch)) - { - setSkip($"Skipping because arch is `{arch}`"); - } - } - } -} diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/TestBase.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/TestBase.cs index 963f07109303..95043eb4dfc5 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/TestBase.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/TestBase.cs @@ -3,20 +3,22 @@ // See the LICENSE file in the project root for more information. using System.IO; +using Xunit; using Xunit.Abstractions; namespace Microsoft.DotNet.SourceBuild.SmokeTests; -public abstract class TestBase +public abstract class TestBase : IClassFixture { + protected Config Config; public static string LogsDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), "logs"); public ITestOutputHelper OutputHelper { get; } - public TestBase(ITestOutputHelper outputHelper) + public TestBase(ITestOutputHelper outputHelper, Config config) { OutputHelper = outputHelper; - + Config = config; if (!Directory.Exists(LogsDirectory)) { Directory.CreateDirectory(LogsDirectory); diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Utilities.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Utilities.cs index 54939d8355f4..a56b4f0259ed 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Utilities.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Utilities.cs @@ -75,7 +75,7 @@ public static void ExtractTarball(string tarballPath, string outputDir, ITestOut { // TarFile doesn't properly handle hard links (https://github.com/dotnet/runtime/pull/85378#discussion_r1221817490), // use 'tar' instead. - if (tarballPath.EndsWith(".tar.gz", StringComparison.OrdinalIgnoreCase) || tarballPath.EndsWith(".tgz", StringComparison.OrdinalIgnoreCase)) + if (tarballPath.EndsWith(".tar.gz", StringComparison.InvariantCultureIgnoreCase) || tarballPath.EndsWith(".tgz", StringComparison.InvariantCultureIgnoreCase)) { ExecuteHelper.ExecuteProcessValidateExitCode("tar", $"xzf {tarballPath} -C {outputDir}", outputHelper); } @@ -85,7 +85,7 @@ public static void ExtractTarball(string tarballPath, string outputDir, ITestOut } else { - throw new InvalidOperationException($"Unsupported tarball format: {tarballPath}"); + throw new InvalidOperationException($"Unsupported archive format: {tarballPath}"); } } @@ -98,16 +98,16 @@ public static void ExtractTarball(string tarballPath, string outputDir, string t using GZipStream decompressorStream = new(fileStream, CompressionMode.Decompress); using TarReader reader = new(decompressorStream); - TarEntry entry; + TarEntry? entry; while ((entry = reader.GetNextEntry()) is not null) { if (matcher.Match(entry.Name).HasMatches) { string outputPath = Path.Join(outputDir, entry.Name); - Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); + Directory.CreateDirectory(Path.GetDirectoryName(outputPath)!); using FileStream outputFileStream = File.Create(outputPath); - entry.DataStream.CopyTo(outputFileStream); + entry.DataStream!.CopyTo(outputFileStream); break; } } @@ -130,12 +130,16 @@ public static IEnumerable GetTarballContentNames(string tarballPath) using GZipStream decompressorStream = new(fileStream, CompressionMode.Decompress); using TarReader reader = new(decompressorStream); - TarEntry entry; + TarEntry? entry; while ((entry = reader.GetNextEntry()) is not null) { yield return entry.Name; } } + else + { + throw new InvalidOperationException($"Unsupported archive format: {tarballPath}"); + } } public static void ExtractNupkg(string package, string outputDir) @@ -146,7 +150,7 @@ public static void ExtractNupkg(string package, string outputDir) foreach (ZipArchiveEntry entry in zip.Entries) { string outputPath = Path.Combine(outputDir, entry.FullName); - Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); + Directory.CreateDirectory(Path.GetDirectoryName(outputPath)!); entry.ExtractToFile(outputPath); } } diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-any.txt b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-any.txt index 9e8e6088e2e0..e59d5de0f1ce 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-any.txt +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-any.txt @@ -1,4 +1,4 @@ -# Contains the list of files which are .dll's or .exe's but are not managed assemblies and should not have their assembly version checked +# Contains the list of native .dll and .exe files that shouldn't have their assembly version checked. # # This list is processed using FileSystemName.MatchesSimpleExpression # @@ -46,4 +46,4 @@ ./packs/Microsoft.NETCore.App.Host.win-x86/x.y.z/runtimes/win-x86/native/singlefilehost.exe ./packs/Microsoft.NETCore.App.Host.win-arm64/x.y.z/runtimes/win-arm64/native/singlefilehost.exe ./shared/Microsoft.NETCore.App/x.y.z/System.IO.Compression.Native.dll -./dotnet.exe \ No newline at end of file +./dotnet.exe diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-x64.txt b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-x64.txt index e93e1d37bdaa..918503d71cb7 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-x64.txt +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls-win-x64.txt @@ -1,7 +1,4 @@ -# Contains the list of files whose assembly versions are to be excluded from comparison between the MSFT & SB SDK. -# These exclusions only take effect if the assembly version of the file in the SB SDK is equal to or greater than -# the version in the MSFT SDK. If the version is less, the file will show up in the results as this is not a scenario -# that is valid for shipping. +# Contains the list of native .dll and .exe files that shouldn't have their assembly version checked. # # This list is processed using FileSystemName.MatchesSimpleExpression # @@ -11,4 +8,4 @@ # # We do not want to filter-out folder entries, therefore, we should use: '?*' and not just '*' -./shared/Microsoft.NETCore.App/x.y.z/mscordaccore_amd64_amd64_x.y.z.dll \ No newline at end of file +./shared/Microsoft.NETCore.App/x.y.z/mscordaccore_amd64_amd64_x.y.z.dll diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls.txt b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls.txt index 1b5390e2a754..8624457fa2da 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls.txt +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/NativeDlls.txt @@ -1,7 +1,4 @@ -# Contains the list of files whose assembly versions are to be excluded from comparison between the MSFT & SB SDK. -# These exclusions only take effect if the assembly version of the file in the SB SDK is equal to or greater than -# the version in the MSFT SDK. If the version is less, the file will show up in the results as this is not a scenario -# that is valid for shipping. +# Contains the list of native .dll and .exe files that shouldn't have their assembly version checked. # # This list is processed using FileSystemName.MatchesSimpleExpression # diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions.txt b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions.txt deleted file mode 100644 index efe2bec15a9f..000000000000 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions.txt +++ /dev/null @@ -1,24 +0,0 @@ -# This list is processed using FileSystemName.MatchesSimpleExpression -# -# Format -# {msft|sb}, [# comment] -# msft = Microsoft built SDK -# sb = source-built SDK -# -# Examples -# 'folder/*' matches 'folder/' and 'folder/abc' -# 'folder/?*' matches 'folder/abc' but not 'folder/' - -msft,./sdk/x.y.z/TestHostNetFramework/x64/msdia140.dll -msft,./sdk/x.y.z/TestHostNetFramework/x86/msdia140.dll -msft,./sdk/x.y.z/datacollector.dll - -sb,./sdk/x.y.z/TestHostNetFramework/x64/msdia140.dll -sb,./sdk/x.y.z/TestHostNetFramework/x86/msdia140.dll -sb,./sdk/x.y.z/datacollector.dll - -msft,./sdk/x.y.z/Containers/containerize/* -sb,./sdk/x.y.z/Containers/containerize/* - -msft,./sdk/x.y.z/Containers/tasks/net472/* -sb,./sdk/x.y.z/Containers/tasks/net472/* diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-linux-x64.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-linux-x64.diff index 745589d6b7c0..85386b7a5d9b 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-linux-x64.diff +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-linux-x64.diff @@ -3,41 +3,10 @@ index ------------ --- a/msftSdkFiles.txt +++ b/sbSdkFiles.txt @@ ------------ @@ - ./packs/Microsoft.AspNetCore.App.Ref/x.y.z/ref\netx.y\System.Security.Cryptography.Xml.xml - ./packs/Microsoft.AspNetCore.App.Ref/x.y.z/ref\netx.y\System.Threading.RateLimiting.dll - ./packs/Microsoft.AspNetCore.App.Ref/x.y.z/ref\netx.y\System.Threading.RateLimiting.xml --./packs/Microsoft.NETCore.App.Host.linux-x64/ --./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/ --./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/ --./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/ --./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/ --./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/apphost --./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/coreclr_delegates.h --./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/hostfxr.h --./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/libnethost.a --./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/libnethost.so --./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/nethost.h --./packs/Microsoft.NETCore.App.Host.linux-x64/x.y.z/runtimes/linux-x64/native/singlefilehost -+./packs/Microsoft.NETCore.App.Host.banana-rid/ -+./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/ -+./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/ -+./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/ -+./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/ -+./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/apphost -+./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/coreclr_delegates.h -+./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/hostfxr.h -+./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/libnethost.a -+./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/libnethost.so -+./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/nethost.h -+./packs/Microsoft.NETCore.App.Host.banana-rid/x.y.z/runtimes/banana-rid/native/singlefilehost - ./packs/Microsoft.NETCore.App.Ref/ - ./packs/Microsoft.NETCore.App.Ref/x.y.z/ - ./packs/Microsoft.NETCore.App.Ref/x.y.z/analyzers/ -@@ ------------ @@ - ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/runtimes/win/lib/ - ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/runtimes/win/lib\netx.y\ - ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/runtimes/win/lib\netx.y\System.Diagnostics.EventLog.dll --./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/runtimes/win/lib\netx.y\System.Diagnostics.EventLog.Messages.dll - ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/runtimes/win/lib\netx.y\System.Security.Cryptography.Pkcs.dll - ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/runtimes/win/lib\netx.y\System.Windows.Extensions.dll - ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools\netx.y\any/System.CodeDom.dll \ No newline at end of file + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/ + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/ + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.dll ++./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.Messages.dll + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/System.Security.Cryptography.Pkcs.dll + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/System.Windows.Extensions.dll + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.CodeDom.dll From 736b6f45c96690e7b30552339fa95d049b10cdda Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Wed, 20 Mar 2024 14:45:52 -0700 Subject: [PATCH 12/41] Add linux file diff exclusions --- .../assets/SdkFileDiffExclusions-linux-any.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions-linux-any.txt diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions-linux-any.txt b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions-linux-any.txt new file mode 100644 index 000000000000..869358959789 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions-linux-any.txt @@ -0,0 +1,14 @@ +# This list is processed using FileSystemName.MatchesSimpleExpression +# +# Format +# {msft|sb}, [# comment] +# msft = Microsoft built SDK +# ub = Unified Build SDK +# +# Examples +# 'folder/*' matches 'folder/' and 'folder/abc' +# 'folder/?*' matches 'folder/abc' but not 'folder/' + +# These files are Windows specific and should never have been in the Microsoft build +msft,./sdk/x.y.z/Containers/containerize/* +msft,./sdk/x.y.z/Containers/tasks/net472/* From d85e153aebffc1202c26b0d77ffda0052f5d880f Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Wed, 20 Mar 2024 17:08:15 -0700 Subject: [PATCH 13/41] Fix env var mismatch --- src/SourceBuild/content/eng/unifiedBuildValidation.targets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index 7e1f585598b6..b180b6572cf3 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -16,10 +16,10 @@ From 43e52e867e390b0fdf5382e434e3f772f5b350af Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Wed, 20 Mar 2024 22:58:40 -0700 Subject: [PATCH 14/41] Update baselines with correct msft and ub sdks --- .../BaselineHelper.cs | 15 +- .../Exclusions.cs | 2 +- .../SdkContentTests.cs | 62 +- .../MsftToSbSdkAssemblyVersions.diff | 1 - .../baselines/MsftToSbSdkFiles-linux-x64.diff | 12 - ...MsftToUbSdkAssemblyVersions-linux-x64.diff | 738 ++++++++++++++++++ ... MsftToUbSdkAssemblyVersions-win-x64.diff} | 0 .../baselines/MsftToUbSdkFiles-linux-x64.diff | 286 +++++++ .../baselines/MsftToUbSdkFiles-win-x64.diff | 0 9 files changed, 1065 insertions(+), 51 deletions(-) delete mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkAssemblyVersions.diff delete mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-linux-x64.diff create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkAssemblyVersions-linux-x64.diff rename src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/{MsftToSbSdkFiles-win-x64.diff => MsftToUbSdkAssemblyVersions-win-x64.diff} (100%) create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-linux-x64.diff create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-win-x64.diff diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/BaselineHelper.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/BaselineHelper.cs index 5451559e4958..95294cd28b6c 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/BaselineHelper.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/BaselineHelper.cs @@ -75,7 +75,10 @@ public static void CompareFiles(string expectedFilePath, string actualFilePath, if (!warnOnDiffs) { - Assert.Null(message); + if (message is not null) + { + Assert.Fail(message); + } } } @@ -104,14 +107,14 @@ public static string RemoveVersions(string source) string wordPart = match.Groups[1].Value; return $"{'/'}{wordPart}{NonSemanticVersionPlaceholder}{'/'}"; }); - + // Remove semantic versions // Regex source: https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string // The regex from https://semver.org has been modified to account for the following: - // - The version should be preceded by a path separator, '.', '-', or '/' - // - The version should match a release identifier that begins with '.' or '-' - // - The version may have one or more release identifiers that begin with '.' or '-' - // - The version should end before a path separator, '.', '-', or '/' + // - The version should be preceded by a path separator, '.', '-', or '/' + // - The version should match a release identifier that begins with '.' or '-' + // - The version may have one or more release identifiers that begin with '.' or '-' + // - The version should end before a path separator, '.', '-', or '/' Regex semanticVersionRegex = new( @"(?<=[./\\-_])(0|[1-9]\d*)\.(0|[1-9]\d*)(\.(0|[1-9]\d*))+" + @"(((?:[-.]((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)))+" diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Exclusions.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Exclusions.cs index b56cc2f342c8..f5be124c6eb5 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Exclusions.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Exclusions.cs @@ -67,7 +67,7 @@ public IEnumerable RemoveAssemblyVersionFileExclusions(IEnumerable GetFileExclusions(string? prefix = null) => GetRidSpecificExclusionFileNames("SdkFileDiffExclusions.txt").SelectMany(f => Utilities.TryParseExclusionsFile(f, prefix)).ToList(); public List GetAssemblyVersionExclusions(string? prefix = null) => GetRidSpecificExclusionFileNames("SdkAssemblyVersionDiffExclusions.txt").SelectMany(f => Utilities.TryParseExclusionsFile(f, prefix)).ToList(); public List GetNativeDllExclusions(string? prefix = null) => GetRidSpecificExclusionFileNames("NativeDlls.txt").SelectMany(f => Utilities.TryParseExclusionsFile(f, prefix)).ToList(); - public string GetBaselineFileDiffFileName() => GetRidSpecificExclusionFileNames("MsftToSbSdkFiles.diff").Last(); + public string GetBaselineFileDiffFileName() => GetRidSpecificExclusionFileNames("MsftToUbSdkFiles.diff").Last(); static string NormalizePath(string path) { diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs index 4456fdb6a782..6c6b57bd8111 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs @@ -29,26 +29,26 @@ public SdkContentTests(ITestOutputHelper outputHelper, Config config) : base(out /// /// Verifies the file layout of the source built sdk tarball to the Microsoft build. - /// The differences are captured in baselines/MsftToSbSdkDiff.txt. + /// The differences are captured in baselines/MsftToUbSdkDiff.txt. /// Version numbers that appear in paths are compared but are stripped from the baseline. /// This makes the baseline durable between releases. This does mean however, entries /// in the baseline may appear identical if the diff is version specific. /// [Fact] - public void CompareMsftToSbFileList() + public void CompareMsftToUbFileList() { const string msftFileListingFileName = "msftSdkFiles.txt"; - const string sbFileListingFileName = "sbSdkFiles.txt"; + const string ubFileListingFileName = "ubSdkFiles.txt"; WriteTarballFileList(Config.MsftSdkArchivePath, msftFileListingFileName, isPortable: true, Exclusions.MsftPrefix); - WriteTarballFileList(Config.UbSdkArchivePath, sbFileListingFileName, isPortable: true, Exclusions.UbPrefix); + WriteTarballFileList(Config.UbSdkArchivePath, ubFileListingFileName, isPortable: true, Exclusions.UbPrefix); - string diff = BaselineHelper.DiffFiles(msftFileListingFileName, sbFileListingFileName, OutputHelper); + string diff = BaselineHelper.DiffFiles(msftFileListingFileName, ubFileListingFileName, OutputHelper); diff = RemoveDiffMarkers(diff); BaselineHelper.CompareBaselineContents(Exclusions.GetBaselineFileDiffFileName(), diff, OutputHelper, Config.WarnOnSdkContentDiffs); } [Fact] - public async Task CompareMsftToSbAssemblyVersions() + public async Task CompareMsftToUbAssemblyVersions() { Assert.NotNull(Config.MsftSdkArchivePath); Assert.NotNull(Config.UbSdkArchivePath); @@ -56,29 +56,29 @@ public async Task CompareMsftToSbAssemblyVersions() DirectoryInfo tempDir = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Path.GetRandomFileName())); try { - DirectoryInfo sbSdkDir = Directory.CreateDirectory(Path.Combine(tempDir.FullName, Exclusions.UbPrefix)); - Utilities.ExtractTarball(Config.UbSdkArchivePath, sbSdkDir.FullName, OutputHelper); + DirectoryInfo ubSdkDir = Directory.CreateDirectory(Path.Combine(tempDir.FullName, Exclusions.UbPrefix)); + Utilities.ExtractTarball(Config.UbSdkArchivePath, ubSdkDir.FullName, OutputHelper); DirectoryInfo msftSdkDir = Directory.CreateDirectory(Path.Combine(tempDir.FullName, Exclusions.MsftPrefix)); Utilities.ExtractTarball(Config.MsftSdkArchivePath, msftSdkDir.FullName, OutputHelper); - var t1 = Task.Run(() => GetSdkAssemblyVersions(sbSdkDir.FullName)); + var t1 = Task.Run(() => GetSdkAssemblyVersions(ubSdkDir.FullName)); var t2 = Task.Run(() => GetSdkAssemblyVersions(msftSdkDir.FullName)); var results = await Task.WhenAll(t1, t2); - Dictionary sbSdkAssemblyVersions = results[0]; + Dictionary ubSdkAssemblyVersions = results[0]; Dictionary msftSdkAssemblyVersions = results[1]; - RemoveExcludedAssemblyVersionPaths(sbSdkAssemblyVersions, msftSdkAssemblyVersions); + RemoveExcludedAssemblyVersionPaths(ubSdkAssemblyVersions, msftSdkAssemblyVersions); - const string SbVersionsFileName = "sb_assemblyversions.txt"; - WriteAssemblyVersionsToFile(sbSdkAssemblyVersions, SbVersionsFileName); + const string UbVersionsFileName = "ub_assemblyversions.txt"; + WriteAssemblyVersionsToFile(ubSdkAssemblyVersions, UbVersionsFileName); const string MsftVersionsFileName = "msft_assemblyversions.txt"; WriteAssemblyVersionsToFile(msftSdkAssemblyVersions, MsftVersionsFileName); - string diff = BaselineHelper.DiffFiles(MsftVersionsFileName, SbVersionsFileName, OutputHelper); + string diff = BaselineHelper.DiffFiles(MsftVersionsFileName, UbVersionsFileName, OutputHelper); diff = RemoveDiffMarkers(diff); - BaselineHelper.CompareBaselineContents("MsftToSbSdkAssemblyVersions.diff", diff, OutputHelper, Config.WarnOnSdkContentDiffs); + BaselineHelper.CompareBaselineContents($"MsftToUbSdkAssemblyVersions-{Config.TargetRid}.diff", diff, OutputHelper, Config.WarnOnSdkContentDiffs); } finally { @@ -86,22 +86,22 @@ public async Task CompareMsftToSbAssemblyVersions() } } - private void RemoveExcludedAssemblyVersionPaths(Dictionary sbSdkAssemblyVersions, Dictionary msftSdkAssemblyVersions) + private void RemoveExcludedAssemblyVersionPaths(Dictionary ubSdkAssemblyVersions, Dictionary msftSdkAssemblyVersions) { IEnumerable assemblyVersionDiffFilters = Exclusions.GetAssemblyVersionExclusions() .Select(filter => filter.TrimStart("./".ToCharArray())); // Remove entries that are not in both. If they should be in both, the mismatch will be caught in another test - foreach (var kvp in sbSdkAssemblyVersions) + foreach (var kvp in ubSdkAssemblyVersions) { if (!msftSdkAssemblyVersions.ContainsKey(kvp.Key)) { - sbSdkAssemblyVersions.Remove(kvp.Key); + ubSdkAssemblyVersions.Remove(kvp.Key); } } foreach (var kvp in msftSdkAssemblyVersions) { - if (!sbSdkAssemblyVersions.ContainsKey(kvp.Key)) + if (!ubSdkAssemblyVersions.ContainsKey(kvp.Key)) { msftSdkAssemblyVersions.Remove(kvp.Key); } @@ -110,16 +110,16 @@ private void RemoveExcludedAssemblyVersionPaths(Dictionary sbS // Remove any excluded files as long as UB SDK's file has the same or greater assembly version compared to the corresponding // file in the MSFT SDK. If the version is less, the file will show up in the results as this is not a scenario // that is valid for shipping. - string[] sbSdkFileArray = sbSdkAssemblyVersions.Keys.ToArray(); - for (int i = sbSdkFileArray.Length - 1; i >= 0; i--) + string[] ubSdkFileArray = ubSdkAssemblyVersions.Keys.ToArray(); + for (int i = ubSdkFileArray.Length - 1; i >= 0; i--) { - string assemblyPath = sbSdkFileArray[i]; - if (sbSdkAssemblyVersions.TryGetValue(assemblyPath, out Version? sbVersion) && + string assemblyPath = ubSdkFileArray[i]; + if (ubSdkAssemblyVersions.TryGetValue(assemblyPath, out Version? ubVersion) && msftSdkAssemblyVersions.TryGetValue(assemblyPath, out Version? msftVersion) && - sbVersion >= msftVersion && + ubVersion >= msftVersion && Utilities.IsFileExcluded(assemblyPath, assemblyVersionDiffFilters)) { - sbSdkAssemblyVersions.Remove(assemblyPath); + ubSdkAssemblyVersions.Remove(assemblyPath); msftSdkAssemblyVersions.Remove(assemblyPath); } } @@ -146,16 +146,16 @@ private static void WriteAssemblyVersionsToFile(Dictionary ass return null; } - private Dictionary GetSdkAssemblyVersions(string sbSdkPath, string? prefix = null) + private Dictionary GetSdkAssemblyVersions(string ubSdkPath, string? prefix = null) { Exclusions ex = Exclusions; IEnumerable exclusionFilters = ex.GetFileExclusions(prefix) .Concat(ex.GetNativeDllExclusions(prefix)) .Concat(ex.GetAssemblyVersionExclusions(prefix)) .Select(filter => filter.TrimStart("./".ToCharArray())); - ConcurrentDictionary sbSdkAssemblyVersions = new(); + ConcurrentDictionary ubSdkAssemblyVersions = new(); List tasks = new List(); - foreach (string dir in Directory.EnumerateDirectories(sbSdkPath, "*", SearchOption.AllDirectories).Append(sbSdkPath)) + foreach (string dir in Directory.EnumerateDirectories(ubSdkPath, "*", SearchOption.AllDirectories).Append(ubSdkPath)) { var t = Task.Run(() => { @@ -165,14 +165,14 @@ private static void WriteAssemblyVersionsToFile(Dictionary ass if (fileExt.Equals(".dll", StringComparison.OrdinalIgnoreCase) || fileExt.Equals(".exe", StringComparison.OrdinalIgnoreCase)) { - string relativePath = Path.GetRelativePath(sbSdkPath, file); + string relativePath = Path.GetRelativePath(ubSdkPath, file); string normalizedPath = BaselineHelper.RemoveVersions(relativePath); if (!ex.IsFileExcluded(normalizedPath, exclusionFilters)) { try { AssemblyName assemblyName = AssemblyName.GetAssemblyName(file); - Assert.True(sbSdkAssemblyVersions.TryAdd(normalizedPath, GetVersion(assemblyName))); + Assert.True(ubSdkAssemblyVersions.TryAdd(normalizedPath, GetVersion(assemblyName))); } catch (BadImageFormatException) { @@ -185,7 +185,7 @@ private static void WriteAssemblyVersionsToFile(Dictionary ass tasks.Add(t); } Task.WaitAll(tasks.ToArray()); - return sbSdkAssemblyVersions.ToDictionary(); + return ubSdkAssemblyVersions.ToDictionary(); } private void WriteTarballFileList(string? tarballPath, string outputFileName, bool isPortable, string sdkType) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkAssemblyVersions.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkAssemblyVersions.diff deleted file mode 100644 index 8b137891791f..000000000000 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkAssemblyVersions.diff +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-linux-x64.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-linux-x64.diff deleted file mode 100644 index 85386b7a5d9b..000000000000 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-linux-x64.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/msftSdkFiles.txt b/sbSdkFiles.txt -index ------------ ---- a/msftSdkFiles.txt -+++ b/sbSdkFiles.txt -@@ ------------ @@ - ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/ - ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/ - ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.dll -+./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.Messages.dll - ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/System.Security.Cryptography.Pkcs.dll - ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/System.Windows.Extensions.dll - ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.CodeDom.dll diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkAssemblyVersions-linux-x64.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkAssemblyVersions-linux-x64.diff new file mode 100644 index 000000000000..fb5689c6ca41 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkAssemblyVersions-linux-x64.diff @@ -0,0 +1,738 @@ +diff --git a/msft_assemblyversions.txt b/ub_assemblyversions.txt +index ------------ +--- a/msft_assemblyversions.txt ++++ b/ub_assemblyversions.txt +@@ ------------ @@ sdk\x.y.z\cs\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 + sdk\x.y.z\cs\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 + sdk\x.y.z\cs\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 + sdk\x.y.z\cs\MSBuild.resources.dll - 15.1.0 +-sdk\x.y.z\cs\NuGet.Commands.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.Common.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.Configuration.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.Credentials.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.Frameworks.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.LibraryModel.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.Localization.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.PackageManagement.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.Packaging.Core.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.Packaging.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.ProjectModel.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.Protocol.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.Resolver.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.Versioning.resources.dll - 6.0.0 +-sdk\x.y.z\cs\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 ++sdk\x.y.z\cs\NuGet.Commands.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.Common.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.Configuration.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.Credentials.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.Frameworks.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.LibraryModel.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.Localization.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.PackageManagement.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.Packaging.Core.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.Packaging.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.ProjectModel.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.Protocol.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.Resolver.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.Versioning.resources.dll - 6.10.0 ++sdk\x.y.z\cs\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 + sdk\x.y.z\cs\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\cs\Test.Utility.resources.dll - 6.0.0 ++sdk\x.y.z\cs\Test.Utility.resources.dll - 6.10.0 + sdk\x.y.z\cs\vstest.console.resources.dll - 15.0.0 + sdk\x.y.z\de\dotnet.resources.dll - 9.0.100 + sdk\x.y.z\de\Microsoft.Build.resources.dll - 15.1.0 +@@ ------------ @@ sdk\x.y.z\de\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 + sdk\x.y.z\de\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 + sdk\x.y.z\de\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 + sdk\x.y.z\de\MSBuild.resources.dll - 15.1.0 +-sdk\x.y.z\de\NuGet.Commands.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.Common.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.Configuration.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.Credentials.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.Frameworks.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.LibraryModel.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.Localization.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.PackageManagement.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.Packaging.Core.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.Packaging.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.ProjectModel.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.Protocol.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.Resolver.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.Versioning.resources.dll - 6.0.0 +-sdk\x.y.z\de\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 ++sdk\x.y.z\de\NuGet.Commands.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.Common.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.Configuration.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.Credentials.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.Frameworks.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.LibraryModel.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.Localization.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.PackageManagement.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.Packaging.Core.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.Packaging.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.ProjectModel.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.Protocol.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.Resolver.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.Versioning.resources.dll - 6.10.0 ++sdk\x.y.z\de\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 + sdk\x.y.z\de\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\de\Test.Utility.resources.dll - 6.0.0 ++sdk\x.y.z\de\Test.Utility.resources.dll - 6.10.0 + sdk\x.y.z\de\vstest.console.resources.dll - 15.0.0 + sdk\x.y.z\dotnet.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-dev-certs\x.y.z\tools/netx.y/any\dotnet-dev-certs.dll - 9.0.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\BuildHost-netcore\zh-Hans\System.CommandLine + sdk\x.y.z\DotnetTools\dotnet-format\BuildHost-netcore\zh-Hant\Microsoft.CodeAnalysis.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\BuildHost-netcore\zh-Hant\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\BuildHost-netcore\zh-Hant\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\cs\dotnet-format.resources.dll - 9.0.10 ++sdk\x.y.z\DotnetTools\dotnet-format\cs\dotnet-format.resources.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-format\cs\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\cs\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\cs\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\cs\Microsoft.CodeAnalysis.VisualBasic.Worksp + sdk\x.y.z\DotnetTools\dotnet-format\cs\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\cs\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\cs\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\de\dotnet-format.resources.dll - 9.0.10 ++sdk\x.y.z\DotnetTools\dotnet-format\de\dotnet-format.resources.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-format\de\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\de\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\de\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\de\Microsoft.CodeAnalysis.VisualBasic.Worksp + sdk\x.y.z\DotnetTools\dotnet-format\de\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\de\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\de\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\dotnet-format.dll - 9.0.10 +-sdk\x.y.z\DotnetTools\dotnet-format\es\dotnet-format.resources.dll - 9.0.10 ++sdk\x.y.z\DotnetTools\dotnet-format\dotnet-format.dll - 9.0.100 ++sdk\x.y.z\DotnetTools\dotnet-format\es\dotnet-format.resources.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-format\es\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\es\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\es\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\es\Microsoft.CodeAnalysis.VisualBasic.Worksp + sdk\x.y.z\DotnetTools\dotnet-format\es\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\es\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\es\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\fr\dotnet-format.resources.dll - 9.0.10 ++sdk\x.y.z\DotnetTools\dotnet-format\fr\dotnet-format.resources.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-format\fr\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\fr\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\fr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\fr\Microsoft.CodeAnalysis.Workspaces.MSBuild + sdk\x.y.z\DotnetTools\dotnet-format\fr\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\fr\System.CommandLine.resources.dll - 2.0.0 + sdk\x.y.z\DotnetTools\dotnet-format\Humanizer.dll - 2.14.0 +-sdk\x.y.z\DotnetTools\dotnet-format\it\dotnet-format.resources.dll - 9.0.10 ++sdk\x.y.z\DotnetTools\dotnet-format\it\dotnet-format.resources.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-format\it\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\it\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\it\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\it\Microsoft.CodeAnalysis.VisualBasic.Worksp + sdk\x.y.z\DotnetTools\dotnet-format\it\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\it\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\it\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\ja\dotnet-format.resources.dll - 9.0.10 ++sdk\x.y.z\DotnetTools\dotnet-format\ja\dotnet-format.resources.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-format\ja\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\ja\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\ja\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\ja\Microsoft.CodeAnalysis.VisualBasic.Worksp + sdk\x.y.z\DotnetTools\dotnet-format\ja\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\ja\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\ja\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\ko\dotnet-format.resources.dll - 9.0.10 ++sdk\x.y.z\DotnetTools\dotnet-format\ko\dotnet-format.resources.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-format\ko\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\ko\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\ko\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\ko\Microsoft.CodeAnalysis.VisualBasic.Worksp + sdk\x.y.z\DotnetTools\dotnet-format\ko\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\ko\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\ko\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Bcl.AsyncInterfaces.dll - 8.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Bcl.AsyncInterfaces.dll - 9.0.0 + sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Build.Locator.dll - 1.0.0 + sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Build.Tasks.Core.dll - 15.1.0 + sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Build.Utilities.Core.dll - 15.1.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.CodeAnalysis.VisualBasic.Workspace + sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.CodeAnalysis.Workspaces.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.CodeAnalysis.Workspaces.MSBuild.dll - 4.10.0 +-sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.DiaSymReader.dll - 2.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.DiaSymReader.dll - 2.1.0 + sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Extensions.DependencyInjection.Abstractions.dll - 9.0.0 + sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Extensions.DependencyInjection.dll - 9.0.0 + sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Extensions.FileSystemGlobbing.dll - 9.0.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Extensions.Primitives.dll - 9.0.0 + sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.NET.StringTools.dll - 1.0.0 + sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.VisualStudio.Setup.Configuration.Interop.dll - 1.0.0 + sdk\x.y.z\DotnetTools\dotnet-format\Newtonsoft.Json.dll - 13.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\pl\dotnet-format.resources.dll - 9.0.10 ++sdk\x.y.z\DotnetTools\dotnet-format\pl\dotnet-format.resources.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-format\pl\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\pl\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\pl\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\pl\Microsoft.CodeAnalysis.VisualBasic.Worksp + sdk\x.y.z\DotnetTools\dotnet-format\pl\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\pl\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\pl\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\dotnet-format.resources.dll - 9.0.10 ++sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\dotnet-format.resources.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\Microsoft.CodeAnalysis.VisualBasic.Wor + sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\ru\dotnet-format.resources.dll - 9.0.10 ++sdk\x.y.z\DotnetTools\dotnet-format\ru\dotnet-format.resources.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-format\ru\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\ru\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\ru\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\ru\Microsoft.CodeAnalysis.VisualBasic.Worksp + sdk\x.y.z\DotnetTools\dotnet-format\ru\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\ru\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\ru\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Diagnostics.EventLog.dll - 8.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Diagnostics.EventLog.Messages.dll - 8.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Security.Cryptography.Pkcs.dll - 7.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Windows.Extensions.dll - 8.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.CodeDom.dll - 7.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Diagnostics.EventLog.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Diagnostics.EventLog.Messages.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Security.Cryptography.Pkcs.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Windows.Extensions.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.CodeDom.dll - 9.0.0 + sdk\x.y.z\DotnetTools\dotnet-format\System.CommandLine.dll - 2.0.0 + sdk\x.y.z\DotnetTools\dotnet-format\System.CommandLine.Rendering.dll - 0.4.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.AttributedModel.dll - 8.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.Convention.dll - 8.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.Hosting.dll - 8.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.Runtime.dll - 8.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.TypedParts.dll - 8.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Configuration.ConfigurationManager.dll - 8.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Diagnostics.EventLog.dll - 8.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.AttributedModel.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.Convention.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.Hosting.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.Runtime.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.TypedParts.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Configuration.ConfigurationManager.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Diagnostics.EventLog.dll - 9.0.0 + sdk\x.y.z\DotnetTools\dotnet-format\System.IO.Pipelines.dll - 8.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Reflection.MetadataLoadContext.dll - 7.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Resources.Extensions.dll - 7.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Cryptography.Pkcs.dll - 7.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Cryptography.ProtectedData.dll - 8.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Cryptography.Xml.dll - 7.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Permissions.dll - 8.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\System.Windows.Extensions.dll - 8.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\tr\dotnet-format.resources.dll - 9.0.10 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Reflection.MetadataLoadContext.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Resources.Extensions.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Cryptography.Pkcs.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Cryptography.ProtectedData.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Cryptography.Xml.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Permissions.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\System.Windows.Extensions.dll - 9.0.0 ++sdk\x.y.z\DotnetTools\dotnet-format\tr\dotnet-format.resources.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-format\tr\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\tr\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\tr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\tr\Microsoft.CodeAnalysis.VisualBasic.Worksp + sdk\x.y.z\DotnetTools\dotnet-format\tr\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\tr\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\tr\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\dotnet-format.resources.dll - 9.0.10 ++sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\dotnet-format.resources.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\Microsoft.CodeAnalysis.VisualBasic.W + sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\DotnetTools\dotnet-format\zh-Hant\dotnet-format.resources.dll - 9.0.10 ++sdk\x.y.z\DotnetTools\dotnet-format\zh-Hant\dotnet-format.resources.dll - 9.0.100 + sdk\x.y.z\DotnetTools\dotnet-format\zh-Hant\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\zh-Hant\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-format\zh-Hant\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 +@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.CodeAnalysis + sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.CodeAnalysis.Workspaces.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll - 4.10.0 + sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.CodeAnalysis.Workspaces.MSBuild.dll - 4.10.0 +-sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.DiaSymReader.dll - 2.0.0 ++sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.DiaSymReader.dll - 2.1.0 + sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.Extensions.DependencyInjection.Abstractions.dll - 9.0.0 + sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.Extensions.Logging.Abstractions.dll - 9.0.0 + sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.VisualStudio.Setup.Configuration.Interop.dll - 1.0.0 +@@ ------------ @@ sdk\x.y.z\es\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 + sdk\x.y.z\es\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 + sdk\x.y.z\es\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 + sdk\x.y.z\es\MSBuild.resources.dll - 15.1.0 +-sdk\x.y.z\es\NuGet.Commands.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.Common.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.Configuration.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.Credentials.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.Frameworks.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.LibraryModel.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.Localization.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.PackageManagement.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.Packaging.Core.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.Packaging.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.ProjectModel.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.Protocol.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.Resolver.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.Versioning.resources.dll - 6.0.0 +-sdk\x.y.z\es\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 ++sdk\x.y.z\es\NuGet.Commands.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.Common.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.Configuration.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.Credentials.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.Frameworks.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.LibraryModel.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.Localization.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.PackageManagement.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.Packaging.Core.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.Packaging.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.ProjectModel.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.Protocol.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.Resolver.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.Versioning.resources.dll - 6.10.0 ++sdk\x.y.z\es\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 + sdk\x.y.z\es\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\es\Test.Utility.resources.dll - 6.0.0 ++sdk\x.y.z\es\Test.Utility.resources.dll - 6.10.0 + sdk\x.y.z\es\vstest.console.resources.dll - 15.0.0 + sdk\x.y.z\Extensions\cs\Microsoft.TestPlatform.Extensions.BlameDataCollector.resources.dll - 15.0.0 + sdk\x.y.z\Extensions\cs\Microsoft.TestPlatform.Extensions.EventLogCollector.resources.dll - 15.0.0 +@@ ------------ @@ sdk\x.y.z\fr\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 + sdk\x.y.z\fr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 + sdk\x.y.z\fr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 + sdk\x.y.z\fr\MSBuild.resources.dll - 15.1.0 +-sdk\x.y.z\fr\NuGet.Commands.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.Common.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.Configuration.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.Credentials.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.Frameworks.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.LibraryModel.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.Localization.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.PackageManagement.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.Packaging.Core.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.Packaging.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.ProjectModel.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.Protocol.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.Resolver.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.Versioning.resources.dll - 6.0.0 +-sdk\x.y.z\fr\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 ++sdk\x.y.z\fr\NuGet.Commands.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.Common.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.Configuration.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.Credentials.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.Frameworks.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.LibraryModel.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.Localization.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.PackageManagement.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.Packaging.Core.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.Packaging.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.ProjectModel.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.Protocol.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.Resolver.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.Versioning.resources.dll - 6.10.0 ++sdk\x.y.z\fr\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 + sdk\x.y.z\fr\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\fr\Test.Utility.resources.dll - 6.0.0 ++sdk\x.y.z\fr\Test.Utility.resources.dll - 6.10.0 + sdk\x.y.z\fr\vstest.console.resources.dll - 15.0.0 + sdk\x.y.z\FSharp\cs\FSharp.Build.resources.dll - 12.8.300 + sdk\x.y.z\FSharp\cs\FSharp.Compiler.Interactive.Settings.resources.dll - 12.8.300 +@@ ------------ @@ sdk\x.y.z\it\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 + sdk\x.y.z\it\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 + sdk\x.y.z\it\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 + sdk\x.y.z\it\MSBuild.resources.dll - 15.1.0 +-sdk\x.y.z\it\NuGet.Commands.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.Common.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.Configuration.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.Credentials.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.Frameworks.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.LibraryModel.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.Localization.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.PackageManagement.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.Packaging.Core.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.Packaging.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.ProjectModel.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.Protocol.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.Resolver.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.Versioning.resources.dll - 6.0.0 +-sdk\x.y.z\it\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 ++sdk\x.y.z\it\NuGet.Commands.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.Common.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.Configuration.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.Credentials.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.Frameworks.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.LibraryModel.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.Localization.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.PackageManagement.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.Packaging.Core.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.Packaging.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.ProjectModel.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.Protocol.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.Resolver.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.Versioning.resources.dll - 6.10.0 ++sdk\x.y.z\it\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 + sdk\x.y.z\it\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\it\Test.Utility.resources.dll - 6.0.0 ++sdk\x.y.z\it\Test.Utility.resources.dll - 6.10.0 + sdk\x.y.z\it\vstest.console.resources.dll - 15.0.0 + sdk\x.y.z\ja\dotnet.resources.dll - 9.0.100 + sdk\x.y.z\ja\Microsoft.Build.resources.dll - 15.1.0 +@@ ------------ @@ sdk\x.y.z\ja\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 + sdk\x.y.z\ja\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 + sdk\x.y.z\ja\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 + sdk\x.y.z\ja\MSBuild.resources.dll - 15.1.0 +-sdk\x.y.z\ja\NuGet.Commands.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.Common.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.Configuration.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.Credentials.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.Frameworks.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.LibraryModel.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.Localization.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.PackageManagement.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.Packaging.Core.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.Packaging.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.ProjectModel.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.Protocol.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.Resolver.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.Versioning.resources.dll - 6.0.0 +-sdk\x.y.z\ja\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 ++sdk\x.y.z\ja\NuGet.Commands.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.Common.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.Configuration.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.Credentials.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.Frameworks.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.LibraryModel.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.Localization.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.PackageManagement.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.Packaging.Core.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.Packaging.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.ProjectModel.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.Protocol.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.Resolver.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.Versioning.resources.dll - 6.10.0 ++sdk\x.y.z\ja\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 + sdk\x.y.z\ja\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\ja\Test.Utility.resources.dll - 6.0.0 ++sdk\x.y.z\ja\Test.Utility.resources.dll - 6.10.0 + sdk\x.y.z\ja\vstest.console.resources.dll - 15.0.0 + sdk\x.y.z\ko\dotnet.resources.dll - 9.0.100 + sdk\x.y.z\ko\Microsoft.Build.resources.dll - 15.1.0 +@@ ------------ @@ sdk\x.y.z\ko\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 + sdk\x.y.z\ko\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 + sdk\x.y.z\ko\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 + sdk\x.y.z\ko\MSBuild.resources.dll - 15.1.0 +-sdk\x.y.z\ko\NuGet.Commands.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.Common.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.Configuration.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.Credentials.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.Frameworks.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.LibraryModel.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.Localization.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.PackageManagement.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.Packaging.Core.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.Packaging.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.ProjectModel.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.Protocol.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.Resolver.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.Versioning.resources.dll - 6.0.0 +-sdk\x.y.z\ko\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 ++sdk\x.y.z\ko\NuGet.Commands.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.Common.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.Configuration.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.Credentials.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.Frameworks.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.LibraryModel.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.Localization.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.PackageManagement.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.Packaging.Core.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.Packaging.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.ProjectModel.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.Protocol.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.Resolver.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.Versioning.resources.dll - 6.10.0 ++sdk\x.y.z\ko\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 + sdk\x.y.z\ko\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\ko\Test.Utility.resources.dll - 6.0.0 ++sdk\x.y.z\ko\Test.Utility.resources.dll - 6.10.0 + sdk\x.y.z\ko\vstest.console.resources.dll - 15.0.0 + sdk\x.y.z\Microsoft.ApplicationInsights.dll - 2.22.0 + sdk\x.y.z\Microsoft.AspNetCore.DeveloperCertificates.XPlat.dll - 9.0.0 +@@ ------------ @@ sdk\x.y.z\pl\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 + sdk\x.y.z\pl\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 + sdk\x.y.z\pl\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 + sdk\x.y.z\pl\MSBuild.resources.dll - 15.1.0 +-sdk\x.y.z\pl\NuGet.Commands.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.Common.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.Configuration.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.Credentials.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.Frameworks.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.LibraryModel.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.Localization.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.PackageManagement.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.Packaging.Core.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.Packaging.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.ProjectModel.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.Protocol.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.Resolver.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.Versioning.resources.dll - 6.0.0 +-sdk\x.y.z\pl\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 ++sdk\x.y.z\pl\NuGet.Commands.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.Common.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.Configuration.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.Credentials.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.Frameworks.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.LibraryModel.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.Localization.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.PackageManagement.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.Packaging.Core.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.Packaging.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.ProjectModel.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.Protocol.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.Resolver.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.Versioning.resources.dll - 6.10.0 ++sdk\x.y.z\pl\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 + sdk\x.y.z\pl\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\pl\Test.Utility.resources.dll - 6.0.0 ++sdk\x.y.z\pl\Test.Utility.resources.dll - 6.10.0 + sdk\x.y.z\pl\vstest.console.resources.dll - 15.0.0 + sdk\x.y.z\pt-BR\dotnet.resources.dll - 9.0.100 + sdk\x.y.z\pt-BR\Microsoft.Build.resources.dll - 15.1.0 +@@ ------------ @@ sdk\x.y.z\pt-BR\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0. + sdk\x.y.z\pt-BR\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 + sdk\x.y.z\pt-BR\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 + sdk\x.y.z\pt-BR\MSBuild.resources.dll - 15.1.0 +-sdk\x.y.z\pt-BR\NuGet.Commands.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.Common.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.Configuration.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.Credentials.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.Frameworks.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.LibraryModel.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.Localization.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.PackageManagement.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.Packaging.Core.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.Packaging.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.ProjectModel.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.Protocol.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.Resolver.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.Versioning.resources.dll - 6.0.0 +-sdk\x.y.z\pt-BR\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 ++sdk\x.y.z\pt-BR\NuGet.Commands.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.Common.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.Configuration.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.Credentials.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.Frameworks.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.LibraryModel.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.Localization.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.PackageManagement.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.Packaging.Core.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.Packaging.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.ProjectModel.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.Protocol.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.Resolver.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.Versioning.resources.dll - 6.10.0 ++sdk\x.y.z\pt-BR\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 + sdk\x.y.z\pt-BR\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\pt-BR\Test.Utility.resources.dll - 6.0.0 ++sdk\x.y.z\pt-BR\Test.Utility.resources.dll - 6.10.0 + sdk\x.y.z\pt-BR\vstest.console.resources.dll - 15.0.0 + sdk\x.y.z\ref\Microsoft.Build.Framework.dll - 15.1.0 + sdk\x.y.z\ref\Microsoft.Build.Utilities.Core.dll - 15.1.0 +@@ ------------ @@ sdk\x.y.z\ru\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 + sdk\x.y.z\ru\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 + sdk\x.y.z\ru\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 + sdk\x.y.z\ru\MSBuild.resources.dll - 15.1.0 +-sdk\x.y.z\ru\NuGet.Commands.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.Common.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.Configuration.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.Credentials.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.Frameworks.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.LibraryModel.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.Localization.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.PackageManagement.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.Packaging.Core.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.Packaging.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.ProjectModel.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.Protocol.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.Resolver.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.Versioning.resources.dll - 6.0.0 +-sdk\x.y.z\ru\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 ++sdk\x.y.z\ru\NuGet.Commands.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.Common.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.Configuration.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.Credentials.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.Frameworks.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.LibraryModel.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.Localization.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.PackageManagement.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.Packaging.Core.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.Packaging.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.ProjectModel.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.Protocol.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.Resolver.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.Versioning.resources.dll - 6.10.0 ++sdk\x.y.z\ru\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 + sdk\x.y.z\ru\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\ru\Test.Utility.resources.dll - 6.0.0 ++sdk\x.y.z\ru\Test.Utility.resources.dll - 6.10.0 + sdk\x.y.z\ru\vstest.console.resources.dll - 15.0.0 + sdk\x.y.z\runtimes\win\lib/netx.y/System.Diagnostics.EventLog.dll - 9.0.0 + sdk\x.y.z\runtimes\win\lib/netx.y/System.Diagnostics.EventLog.Messages.dll - 9.0.0 +@@ ------------ @@ sdk\x.y.z\tr\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 + sdk\x.y.z\tr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 + sdk\x.y.z\tr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 + sdk\x.y.z\tr\MSBuild.resources.dll - 15.1.0 +-sdk\x.y.z\tr\NuGet.Commands.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.Common.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.Configuration.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.Credentials.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.Frameworks.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.LibraryModel.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.Localization.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.PackageManagement.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.Packaging.Core.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.Packaging.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.ProjectModel.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.Protocol.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.Resolver.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.Versioning.resources.dll - 6.0.0 +-sdk\x.y.z\tr\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 ++sdk\x.y.z\tr\NuGet.Commands.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.Common.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.Configuration.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.Credentials.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.Frameworks.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.LibraryModel.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.Localization.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.PackageManagement.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.Packaging.Core.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.Packaging.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.ProjectModel.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.Protocol.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.Resolver.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.Versioning.resources.dll - 6.10.0 ++sdk\x.y.z\tr\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 + sdk\x.y.z\tr\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\tr\Test.Utility.resources.dll - 6.0.0 ++sdk\x.y.z\tr\Test.Utility.resources.dll - 6.10.0 + sdk\x.y.z\tr\vstest.console.resources.dll - 15.0.0 + sdk\x.y.z\vstest.console.dll - 15.0.0 + sdk\x.y.z\zh-Hans\dotnet.resources.dll - 9.0.100 +@@ ------------ @@ sdk\x.y.z\zh-Hans\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15. + sdk\x.y.z\zh-Hans\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 + sdk\x.y.z\zh-Hans\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 + sdk\x.y.z\zh-Hans\MSBuild.resources.dll - 15.1.0 +-sdk\x.y.z\zh-Hans\NuGet.Commands.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.Common.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.Configuration.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.Credentials.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.Frameworks.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.LibraryModel.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.Localization.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.PackageManagement.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.Packaging.Core.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.Packaging.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.ProjectModel.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.Protocol.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.Resolver.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.Versioning.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hans\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 ++sdk\x.y.z\zh-Hans\NuGet.Commands.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.Common.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.Configuration.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.Credentials.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.Frameworks.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.LibraryModel.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.Localization.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.PackageManagement.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.Packaging.Core.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.Packaging.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.ProjectModel.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.Protocol.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.Resolver.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.Versioning.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hans\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 + sdk\x.y.z\zh-Hans\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\zh-Hans\Test.Utility.resources.dll - 6.0.0 ++sdk\x.y.z\zh-Hans\Test.Utility.resources.dll - 6.10.0 + sdk\x.y.z\zh-Hans\vstest.console.resources.dll - 15.0.0 + sdk\x.y.z\zh-Hant\dotnet.resources.dll - 9.0.100 + sdk\x.y.z\zh-Hant\Microsoft.Build.resources.dll - 15.1.0 +@@ ------------ @@ sdk\x.y.z\zh-Hant\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15. + sdk\x.y.z\zh-Hant\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 + sdk\x.y.z\zh-Hant\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 + sdk\x.y.z\zh-Hant\MSBuild.resources.dll - 15.1.0 +-sdk\x.y.z\zh-Hant\NuGet.Commands.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.Common.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.Configuration.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.Credentials.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.Frameworks.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.LibraryModel.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.Localization.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.PackageManagement.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.Packaging.Core.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.Packaging.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.ProjectModel.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.Protocol.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.Resolver.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.Versioning.resources.dll - 6.0.0 +-sdk\x.y.z\zh-Hant\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 ++sdk\x.y.z\zh-Hant\NuGet.Commands.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.Common.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.Configuration.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.Credentials.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.Frameworks.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.LibraryModel.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.Localization.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.PackageManagement.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.Packaging.Core.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.Packaging.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.ProjectModel.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.Protocol.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.Resolver.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.Versioning.resources.dll - 6.10.0 ++sdk\x.y.z\zh-Hant\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 + sdk\x.y.z\zh-Hant\System.CommandLine.resources.dll - 2.0.0 +-sdk\x.y.z\zh-Hant\Test.Utility.resources.dll - 6.0.0 ++sdk\x.y.z\zh-Hant\Test.Utility.resources.dll - 6.10.0 + sdk\x.y.z\zh-Hant\vstest.console.resources.dll - 15.0.0 + shared\Microsoft.AspNetCore.App\x.y.z\Microsoft.AspNetCore.Antiforgery.dll - 9.0.0 + shared\Microsoft.AspNetCore.App\x.y.z\Microsoft.AspNetCore.Authentication.Abstractions.dll - 9.0.0 + diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-win-x64.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkAssemblyVersions-win-x64.diff similarity index 100% rename from src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToSbSdkFiles-win-x64.diff rename to src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkAssemblyVersions-win-x64.diff diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-linux-x64.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-linux-x64.diff new file mode 100644 index 000000000000..a4ee90f6a0e8 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-linux-x64.diff @@ -0,0 +1,286 @@ +diff --git a/msftSdkFiles.txt b/ubSdkFiles.txt +index ------------ +--- a/msftSdkFiles.txt ++++ b/ubSdkFiles.txt +@@ ------------ @@ + ./sdk/x.y.z/Containers/tasks/netx.y/zh-Hant/System.CommandLine.resources.dll + ./sdk/x.y.z/cs/ + ./sdk/x.y.z/cs/dotnet.resources.dll +-./sdk/x.y.z/cs/Microsoft.Build.NuGetSdkResolver.resources.dll + ./sdk/x.y.z/cs/Microsoft.Build.resources.dll + ./sdk/x.y.z/cs/Microsoft.Build.Tasks.Core.resources.dll + ./sdk/x.y.z/cs/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + ./sdk/x.y.z/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/cs/MSBuild.resources.dll +-./sdk/x.y.z/cs/NuGet.Build.Tasks.Console.resources.dll +-./sdk/x.y.z/cs/NuGet.Build.Tasks.resources.dll +-./sdk/x.y.z/cs/NuGet.CommandLine.XPlat.resources.dll ++./sdk/x.y.z/cs/NuGet.Build.Tasks.Pack.resources.dll + ./sdk/x.y.z/cs/NuGet.Commands.resources.dll + ./sdk/x.y.z/cs/NuGet.Common.resources.dll + ./sdk/x.y.z/cs/NuGet.Configuration.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/datacollector.runtimeconfig.json + ./sdk/x.y.z/de/ + ./sdk/x.y.z/de/dotnet.resources.dll +-./sdk/x.y.z/de/Microsoft.Build.NuGetSdkResolver.resources.dll + ./sdk/x.y.z/de/Microsoft.Build.resources.dll + ./sdk/x.y.z/de/Microsoft.Build.Tasks.Core.resources.dll + ./sdk/x.y.z/de/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + ./sdk/x.y.z/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/de/MSBuild.resources.dll +-./sdk/x.y.z/de/NuGet.Build.Tasks.Console.resources.dll +-./sdk/x.y.z/de/NuGet.Build.Tasks.resources.dll +-./sdk/x.y.z/de/NuGet.CommandLine.XPlat.resources.dll ++./sdk/x.y.z/de/NuGet.Build.Tasks.Pack.resources.dll + ./sdk/x.y.z/de/NuGet.Commands.resources.dll + ./sdk/x.y.z/de/NuGet.Common.resources.dll + ./sdk/x.y.z/de/NuGet.Configuration.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/ + ./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/ + ./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/ +-./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/ + ./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.dll + ./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.Messages.dll + ./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/System.Security.Cryptography.Pkcs.dll +@@ ------------ @@ + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/ + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/ + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.dll ++./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.Messages.dll + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/System.Security.Cryptography.Pkcs.dll + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/System.Windows.Extensions.dll + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.CodeDom.dll +@@ ------------ @@ + ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/zh-Hant/System.CommandLine.resources.dll + ./sdk/x.y.z/es/ + ./sdk/x.y.z/es/dotnet.resources.dll +-./sdk/x.y.z/es/Microsoft.Build.NuGetSdkResolver.resources.dll + ./sdk/x.y.z/es/Microsoft.Build.resources.dll + ./sdk/x.y.z/es/Microsoft.Build.Tasks.Core.resources.dll + ./sdk/x.y.z/es/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + ./sdk/x.y.z/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/es/MSBuild.resources.dll +-./sdk/x.y.z/es/NuGet.Build.Tasks.Console.resources.dll +-./sdk/x.y.z/es/NuGet.Build.Tasks.resources.dll +-./sdk/x.y.z/es/NuGet.CommandLine.XPlat.resources.dll ++./sdk/x.y.z/es/NuGet.Build.Tasks.Pack.resources.dll + ./sdk/x.y.z/es/NuGet.Commands.resources.dll + ./sdk/x.y.z/es/NuGet.Common.resources.dll + ./sdk/x.y.z/es/NuGet.Configuration.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/Extensions/zh-Hant/Microsoft.VisualStudio.TestPlatform.Extensions.Trx.TestLogger.resources.dll + ./sdk/x.y.z/fr/ + ./sdk/x.y.z/fr/dotnet.resources.dll +-./sdk/x.y.z/fr/Microsoft.Build.NuGetSdkResolver.resources.dll + ./sdk/x.y.z/fr/Microsoft.Build.resources.dll + ./sdk/x.y.z/fr/Microsoft.Build.Tasks.Core.resources.dll + ./sdk/x.y.z/fr/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + ./sdk/x.y.z/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/fr/MSBuild.resources.dll +-./sdk/x.y.z/fr/NuGet.Build.Tasks.Console.resources.dll +-./sdk/x.y.z/fr/NuGet.Build.Tasks.resources.dll +-./sdk/x.y.z/fr/NuGet.CommandLine.XPlat.resources.dll ++./sdk/x.y.z/fr/NuGet.Build.Tasks.Pack.resources.dll + ./sdk/x.y.z/fr/NuGet.Commands.resources.dll + ./sdk/x.y.z/fr/NuGet.Common.resources.dll + ./sdk/x.y.z/fr/NuGet.Configuration.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/FSharp/zh-Hant/FSharp.DependencyManager.Nuget.resources.dll + ./sdk/x.y.z/it/ + ./sdk/x.y.z/it/dotnet.resources.dll +-./sdk/x.y.z/it/Microsoft.Build.NuGetSdkResolver.resources.dll + ./sdk/x.y.z/it/Microsoft.Build.resources.dll + ./sdk/x.y.z/it/Microsoft.Build.Tasks.Core.resources.dll + ./sdk/x.y.z/it/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + ./sdk/x.y.z/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/it/MSBuild.resources.dll +-./sdk/x.y.z/it/NuGet.Build.Tasks.Console.resources.dll +-./sdk/x.y.z/it/NuGet.Build.Tasks.resources.dll +-./sdk/x.y.z/it/NuGet.CommandLine.XPlat.resources.dll ++./sdk/x.y.z/it/NuGet.Build.Tasks.Pack.resources.dll + ./sdk/x.y.z/it/NuGet.Commands.resources.dll + ./sdk/x.y.z/it/NuGet.Common.resources.dll + ./sdk/x.y.z/it/NuGet.Configuration.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/it/vstest.console.resources.dll + ./sdk/x.y.z/ja/ + ./sdk/x.y.z/ja/dotnet.resources.dll +-./sdk/x.y.z/ja/Microsoft.Build.NuGetSdkResolver.resources.dll + ./sdk/x.y.z/ja/Microsoft.Build.resources.dll + ./sdk/x.y.z/ja/Microsoft.Build.Tasks.Core.resources.dll + ./sdk/x.y.z/ja/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + ./sdk/x.y.z/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/ja/MSBuild.resources.dll +-./sdk/x.y.z/ja/NuGet.Build.Tasks.Console.resources.dll +-./sdk/x.y.z/ja/NuGet.Build.Tasks.resources.dll +-./sdk/x.y.z/ja/NuGet.CommandLine.XPlat.resources.dll ++./sdk/x.y.z/ja/NuGet.Build.Tasks.Pack.resources.dll + ./sdk/x.y.z/ja/NuGet.Commands.resources.dll + ./sdk/x.y.z/ja/NuGet.Common.resources.dll + ./sdk/x.y.z/ja/NuGet.Configuration.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/KnownWorkloadManifests.txt + ./sdk/x.y.z/ko/ + ./sdk/x.y.z/ko/dotnet.resources.dll +-./sdk/x.y.z/ko/Microsoft.Build.NuGetSdkResolver.resources.dll + ./sdk/x.y.z/ko/Microsoft.Build.resources.dll + ./sdk/x.y.z/ko/Microsoft.Build.Tasks.Core.resources.dll + ./sdk/x.y.z/ko/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + ./sdk/x.y.z/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/ko/MSBuild.resources.dll +-./sdk/x.y.z/ko/NuGet.Build.Tasks.Console.resources.dll +-./sdk/x.y.z/ko/NuGet.Build.Tasks.resources.dll +-./sdk/x.y.z/ko/NuGet.CommandLine.XPlat.resources.dll ++./sdk/x.y.z/ko/NuGet.Build.Tasks.Pack.resources.dll + ./sdk/x.y.z/ko/NuGet.Commands.resources.dll + ./sdk/x.y.z/ko/NuGet.Common.resources.dll + ./sdk/x.y.z/ko/NuGet.Configuration.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/NuGet.Versioning.dll + ./sdk/x.y.z/pl/ + ./sdk/x.y.z/pl/dotnet.resources.dll +-./sdk/x.y.z/pl/Microsoft.Build.NuGetSdkResolver.resources.dll + ./sdk/x.y.z/pl/Microsoft.Build.resources.dll + ./sdk/x.y.z/pl/Microsoft.Build.Tasks.Core.resources.dll + ./sdk/x.y.z/pl/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + ./sdk/x.y.z/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/pl/MSBuild.resources.dll +-./sdk/x.y.z/pl/NuGet.Build.Tasks.Console.resources.dll +-./sdk/x.y.z/pl/NuGet.Build.Tasks.resources.dll +-./sdk/x.y.z/pl/NuGet.CommandLine.XPlat.resources.dll ++./sdk/x.y.z/pl/NuGet.Build.Tasks.Pack.resources.dll + ./sdk/x.y.z/pl/NuGet.Commands.resources.dll + ./sdk/x.y.z/pl/NuGet.Common.resources.dll + ./sdk/x.y.z/pl/NuGet.Configuration.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/PortableRuntimeIdentifierGraph.json + ./sdk/x.y.z/pt-BR/ + ./sdk/x.y.z/pt-BR/dotnet.resources.dll +-./sdk/x.y.z/pt-BR/Microsoft.Build.NuGetSdkResolver.resources.dll + ./sdk/x.y.z/pt-BR/Microsoft.Build.resources.dll + ./sdk/x.y.z/pt-BR/Microsoft.Build.Tasks.Core.resources.dll + ./sdk/x.y.z/pt-BR/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + ./sdk/x.y.z/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/pt-BR/MSBuild.resources.dll +-./sdk/x.y.z/pt-BR/NuGet.Build.Tasks.Console.resources.dll +-./sdk/x.y.z/pt-BR/NuGet.Build.Tasks.resources.dll +-./sdk/x.y.z/pt-BR/NuGet.CommandLine.XPlat.resources.dll ++./sdk/x.y.z/pt-BR/NuGet.Build.Tasks.Pack.resources.dll + ./sdk/x.y.z/pt-BR/NuGet.Commands.resources.dll + ./sdk/x.y.z/pt-BR/NuGet.Common.resources.dll + ./sdk/x.y.z/pt-BR/NuGet.Configuration.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/Roslyn/zh-Hant/Microsoft.Build.Tasks.CodeAnalysis.resources.dll + ./sdk/x.y.z/ru/ + ./sdk/x.y.z/ru/dotnet.resources.dll +-./sdk/x.y.z/ru/Microsoft.Build.NuGetSdkResolver.resources.dll + ./sdk/x.y.z/ru/Microsoft.Build.resources.dll + ./sdk/x.y.z/ru/Microsoft.Build.Tasks.Core.resources.dll + ./sdk/x.y.z/ru/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + ./sdk/x.y.z/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/ru/MSBuild.resources.dll +-./sdk/x.y.z/ru/NuGet.Build.Tasks.Console.resources.dll +-./sdk/x.y.z/ru/NuGet.Build.Tasks.resources.dll +-./sdk/x.y.z/ru/NuGet.CommandLine.XPlat.resources.dll ++./sdk/x.y.z/ru/NuGet.Build.Tasks.Pack.resources.dll + ./sdk/x.y.z/ru/NuGet.Commands.resources.dll + ./sdk/x.y.z/ru/NuGet.Common.resources.dll + ./sdk/x.y.z/ru/NuGet.Configuration.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.References.targets + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ScopedCss.5_0.targets + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ScopedCss.targets +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ServiceWorkerAssetsManifest.targets ++./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ServiceWorker.targets + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.SingleTargeting.targets + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.targets + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Sdk.StaticWebAssets.CurrentVersion.props +@@ ------------ @@ + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/Sdk/ + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/Sdk/Sdk.props + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/Sdk/Sdk.targets ++./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/targets/ ++./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/targets/Microsoft.NET.Sdk.WebAssembly.6_0.temp.targets ++./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/targets/Microsoft.NET.Sdk.WebAssembly.9_0.temp.targets + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/tools/ + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/tools/net472/ + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/tools/net472/Microsoft.NET.Sdk.WebAssembly.Tasks.dll +@@ ------------ @@ + ./sdk/x.y.z/TestHostNetFramework/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/tr/ + ./sdk/x.y.z/tr/dotnet.resources.dll +-./sdk/x.y.z/tr/Microsoft.Build.NuGetSdkResolver.resources.dll + ./sdk/x.y.z/tr/Microsoft.Build.resources.dll + ./sdk/x.y.z/tr/Microsoft.Build.Tasks.Core.resources.dll + ./sdk/x.y.z/tr/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + ./sdk/x.y.z/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/tr/MSBuild.resources.dll +-./sdk/x.y.z/tr/NuGet.Build.Tasks.Console.resources.dll +-./sdk/x.y.z/tr/NuGet.Build.Tasks.resources.dll +-./sdk/x.y.z/tr/NuGet.CommandLine.XPlat.resources.dll ++./sdk/x.y.z/tr/NuGet.Build.Tasks.Pack.resources.dll + ./sdk/x.y.z/tr/NuGet.Commands.resources.dll + ./sdk/x.y.z/tr/NuGet.Common.resources.dll + ./sdk/x.y.z/tr/NuGet.Configuration.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/vstest.console.runtimeconfig.json + ./sdk/x.y.z/zh-Hans/ + ./sdk/x.y.z/zh-Hans/dotnet.resources.dll +-./sdk/x.y.z/zh-Hans/Microsoft.Build.NuGetSdkResolver.resources.dll + ./sdk/x.y.z/zh-Hans/Microsoft.Build.resources.dll + ./sdk/x.y.z/zh-Hans/Microsoft.Build.Tasks.Core.resources.dll + ./sdk/x.y.z/zh-Hans/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + ./sdk/x.y.z/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/zh-Hans/MSBuild.resources.dll +-./sdk/x.y.z/zh-Hans/NuGet.Build.Tasks.Console.resources.dll +-./sdk/x.y.z/zh-Hans/NuGet.Build.Tasks.resources.dll +-./sdk/x.y.z/zh-Hans/NuGet.CommandLine.XPlat.resources.dll ++./sdk/x.y.z/zh-Hans/NuGet.Build.Tasks.Pack.resources.dll + ./sdk/x.y.z/zh-Hans/NuGet.Commands.resources.dll + ./sdk/x.y.z/zh-Hans/NuGet.Common.resources.dll + ./sdk/x.y.z/zh-Hans/NuGet.Configuration.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/zh-Hans/vstest.console.resources.dll + ./sdk/x.y.z/zh-Hant/ + ./sdk/x.y.z/zh-Hant/dotnet.resources.dll +-./sdk/x.y.z/zh-Hant/Microsoft.Build.NuGetSdkResolver.resources.dll + ./sdk/x.y.z/zh-Hant/Microsoft.Build.resources.dll + ./sdk/x.y.z/zh-Hant/Microsoft.Build.Tasks.Core.resources.dll + ./sdk/x.y.z/zh-Hant/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ + ./sdk/x.y.z/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + ./sdk/x.y.z/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + ./sdk/x.y.z/zh-Hant/MSBuild.resources.dll +-./sdk/x.y.z/zh-Hant/NuGet.Build.Tasks.Console.resources.dll +-./sdk/x.y.z/zh-Hant/NuGet.Build.Tasks.resources.dll +-./sdk/x.y.z/zh-Hant/NuGet.CommandLine.XPlat.resources.dll ++./sdk/x.y.z/zh-Hant/NuGet.Build.Tasks.Pack.resources.dll + ./sdk/x.y.z/zh-Hant/NuGet.Commands.resources.dll + ./sdk/x.y.z/zh-Hant/NuGet.Common.resources.dll + ./sdk/x.y.z/zh-Hant/NuGet.Configuration.resources.dll diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-win-x64.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-win-x64.diff new file mode 100644 index 000000000000..e69de29bb2d1 From 5c57672381f84f3ab9938a0cd1265d9bee4f1913 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Thu, 21 Mar 2024 08:23:58 -0700 Subject: [PATCH 15/41] Update assets, log sdk download info during setup --- .../Config.cs | 9 +- ...Microsoft.DotNet.UnifiedBuild.Tests.csproj | 7 +- .../SdkAssemblyVersionDiffExclusions.txt | 44 ++ .../SdkFileDiffExclusions-linux-any.txt | 2 +- ...MsftToUbSdkAssemblyVersions-linux-x64.diff | 738 ------------------ .../baselines/MsftToUbSdkFiles-win-x64.diff | 269 +++++++ .../xunit.runner.json | 4 + 7 files changed, 327 insertions(+), 746 deletions(-) create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/xunit.runner.json diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs index ef4fd0e6ebd7..532046d57ce3 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs @@ -7,13 +7,17 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; +using Xunit.Abstractions; +using Xunit.Sdk; namespace Microsoft.DotNet.SourceBuild.SmokeTests; public class Config : IDisposable { - public Config() + IMessageSink _sink; + public Config(IMessageSink sink) { + _sink = sink; BuildVersion = Environment.GetEnvironmentVariable(BuildVersionEnv) ?? throw new InvalidOperationException($"'{BuildVersionEnv}' must be specified"); PortableRid = Environment.GetEnvironmentVariable(PortableRidEnv) ?? throw new InvalidOperationException($"'{PortableRidEnv}' must be specified"); UbSdkArchivePath = Environment.GetEnvironmentVariable(UbSdkTarballPathEnv) ?? throw new InvalidOperationException($"'{UbSdkTarballPathEnv}' must be specified"); @@ -55,6 +59,7 @@ public async Task DownloadMsftSdkArchive() var client = new HttpClient(new HttpClientHandler() { AllowAutoRedirect = false }); var channel = BuildVersion[..5] + "xx"; var akaMsUrl = $"https://aka.ms/dotnet/{channel}/daily/dotnet-sdk-{TargetRid}{GetArchiveExtension(UbSdkArchivePath)}"; + _sink.OnMessage(new DiagnosticMessage($"Downloading latest sdk from '{akaMsUrl}'")); var redirectResponse = await client.GetAsync(akaMsUrl); // aka.ms returns a 301 for valid redirects and a 302 to Bing for invalid URLs if (redirectResponse.StatusCode != HttpStatusCode.Moved) @@ -62,9 +67,11 @@ public async Task DownloadMsftSdkArchive() throw new InvalidOperationException($"Could not find download link for Microsoft built sdk at '{akaMsUrl}'"); } var closestUrl = redirectResponse.Headers.Location!.ToString(); + _sink.OnMessage(new DiagnosticMessage($"Redirected to '{closestUrl}'")); HttpResponseMessage packageResponse = await client.GetAsync(closestUrl); var packageUriPath = packageResponse.RequestMessage!.RequestUri!.LocalPath; _downloadedMsftSdkPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName() + "." + Path.GetFileName(packageUriPath)); + _sink.OnMessage(new DiagnosticMessage($"Downloading to '{_downloadedMsftSdkPath}'")); using (var file = File.Create(_downloadedMsftSdkPath)) { await packageResponse.Content.CopyToAsync(file); diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index 2896655818cf..817f4d57d3df 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -18,12 +18,7 @@ - - - - + diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkAssemblyVersionDiffExclusions.txt b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkAssemblyVersionDiffExclusions.txt index e5b0530164f9..86ad25225027 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkAssemblyVersionDiffExclusions.txt +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkAssemblyVersionDiffExclusions.txt @@ -11,3 +11,47 @@ # # We do not want to filter-out folder entries, therefore, we should use: '?*' and not just '*' +./sdk/x.y.z/*/NuGet.Commands.resources.dll +./sdk/x.y.z/*/NuGet.Common.resources.dll +./sdk/x.y.z/*/NuGet.Configuration.resources.dll +./sdk/x.y.z/*/NuGet.Credentials.resources.dll +./sdk/x.y.z/*/NuGet.DependencyResolver.Core.resources.dll +./sdk/x.y.z/*/NuGet.Frameworks.resources.dll +./sdk/x.y.z/*/NuGet.LibraryModel.resources.dll +./sdk/x.y.z/*/NuGet.Localization.resources.dll +./sdk/x.y.z/*/NuGet.PackageManagement.resources.dll +./sdk/x.y.z/*/NuGet.Packaging.Core.resources.dll +./sdk/x.y.z/*/NuGet.Packaging.resources.dll +./sdk/x.y.z/*/NuGet.ProjectModel.resources.dll +./sdk/x.y.z/*/NuGet.Protocol.resources.dll +./sdk/x.y.z/*/NuGet.Resolver.resources.dll +./sdk/x.y.z/*/NuGet.Versioning.resources.dll +./sdk/x.y.z/*/NuGet.VisualStudio.Contracts.resources.dll +./sdk/x.y.z/*/Test.Utility.resources.dll + + +./sdk/x.y.z/DotnetTools/dotnet-format/dotnet-format.dll +./sdk/x.y.z/DotnetTools/dotnet-format/*/dotnet-format.resources.dll +./sdk/x.y.z/DotnetTools/dotnet-format/Microsoft.Bcl.AsyncInterfaces.dll +./sdk/x.y.z/DotnetTools/dotnet-format/Microsoft.DiaSymReader.dll +./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.dll +./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.Messages.dll +./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/System.Security.Cryptography.Pkcs.dll +./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/System.Windows.Extensions.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.CodeDom.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Composition.AttributedModel.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Composition.Convention.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Composition.Hosting.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Composition.Runtime.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Composition.TypedParts.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Configuration.ConfigurationManager.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Diagnostics.EventLog.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Reflection.MetadataLoadContext.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Resources.Extensions.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Security.Cryptography.Pkcs.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Security.Cryptography.ProtectedData.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Security.Cryptography.Xml.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Security.Permissions.dll +./sdk/x.y.z/DotnetTools/dotnet-format/System.Windows.Extensions.dll + +./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/Microsoft.DiaSymReader.dll diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions-linux-any.txt b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions-linux-any.txt index 869358959789..1344e262fcf2 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions-linux-any.txt +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/SdkFileDiffExclusions-linux-any.txt @@ -9,6 +9,6 @@ # 'folder/*' matches 'folder/' and 'folder/abc' # 'folder/?*' matches 'folder/abc' but not 'folder/' -# These files are Windows specific and should never have been in the Microsoft build +# These files are Windows specific and should not be in the Microsoft build msft,./sdk/x.y.z/Containers/containerize/* msft,./sdk/x.y.z/Containers/tasks/net472/* diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkAssemblyVersions-linux-x64.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkAssemblyVersions-linux-x64.diff index fb5689c6ca41..e69de29bb2d1 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkAssemblyVersions-linux-x64.diff +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkAssemblyVersions-linux-x64.diff @@ -1,738 +0,0 @@ -diff --git a/msft_assemblyversions.txt b/ub_assemblyversions.txt -index ------------ ---- a/msft_assemblyversions.txt -+++ b/ub_assemblyversions.txt -@@ ------------ @@ sdk\x.y.z\cs\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 - sdk\x.y.z\cs\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 - sdk\x.y.z\cs\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 - sdk\x.y.z\cs\MSBuild.resources.dll - 15.1.0 --sdk\x.y.z\cs\NuGet.Commands.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.Common.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.Configuration.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.Credentials.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.Frameworks.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.LibraryModel.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.Localization.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.PackageManagement.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.Packaging.Core.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.Packaging.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.ProjectModel.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.Protocol.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.Resolver.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.Versioning.resources.dll - 6.0.0 --sdk\x.y.z\cs\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 -+sdk\x.y.z\cs\NuGet.Commands.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.Common.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.Configuration.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.Credentials.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.Frameworks.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.LibraryModel.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.Localization.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.PackageManagement.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.Packaging.Core.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.Packaging.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.ProjectModel.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.Protocol.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.Resolver.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.Versioning.resources.dll - 6.10.0 -+sdk\x.y.z\cs\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 - sdk\x.y.z\cs\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\cs\Test.Utility.resources.dll - 6.0.0 -+sdk\x.y.z\cs\Test.Utility.resources.dll - 6.10.0 - sdk\x.y.z\cs\vstest.console.resources.dll - 15.0.0 - sdk\x.y.z\de\dotnet.resources.dll - 9.0.100 - sdk\x.y.z\de\Microsoft.Build.resources.dll - 15.1.0 -@@ ------------ @@ sdk\x.y.z\de\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 - sdk\x.y.z\de\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 - sdk\x.y.z\de\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 - sdk\x.y.z\de\MSBuild.resources.dll - 15.1.0 --sdk\x.y.z\de\NuGet.Commands.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.Common.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.Configuration.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.Credentials.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.Frameworks.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.LibraryModel.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.Localization.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.PackageManagement.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.Packaging.Core.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.Packaging.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.ProjectModel.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.Protocol.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.Resolver.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.Versioning.resources.dll - 6.0.0 --sdk\x.y.z\de\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 -+sdk\x.y.z\de\NuGet.Commands.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.Common.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.Configuration.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.Credentials.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.Frameworks.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.LibraryModel.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.Localization.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.PackageManagement.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.Packaging.Core.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.Packaging.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.ProjectModel.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.Protocol.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.Resolver.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.Versioning.resources.dll - 6.10.0 -+sdk\x.y.z\de\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 - sdk\x.y.z\de\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\de\Test.Utility.resources.dll - 6.0.0 -+sdk\x.y.z\de\Test.Utility.resources.dll - 6.10.0 - sdk\x.y.z\de\vstest.console.resources.dll - 15.0.0 - sdk\x.y.z\dotnet.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-dev-certs\x.y.z\tools/netx.y/any\dotnet-dev-certs.dll - 9.0.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\BuildHost-netcore\zh-Hans\System.CommandLine - sdk\x.y.z\DotnetTools\dotnet-format\BuildHost-netcore\zh-Hant\Microsoft.CodeAnalysis.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\BuildHost-netcore\zh-Hant\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\BuildHost-netcore\zh-Hant\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\cs\dotnet-format.resources.dll - 9.0.10 -+sdk\x.y.z\DotnetTools\dotnet-format\cs\dotnet-format.resources.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-format\cs\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\cs\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\cs\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\cs\Microsoft.CodeAnalysis.VisualBasic.Worksp - sdk\x.y.z\DotnetTools\dotnet-format\cs\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\cs\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\cs\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\de\dotnet-format.resources.dll - 9.0.10 -+sdk\x.y.z\DotnetTools\dotnet-format\de\dotnet-format.resources.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-format\de\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\de\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\de\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\de\Microsoft.CodeAnalysis.VisualBasic.Worksp - sdk\x.y.z\DotnetTools\dotnet-format\de\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\de\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\de\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\dotnet-format.dll - 9.0.10 --sdk\x.y.z\DotnetTools\dotnet-format\es\dotnet-format.resources.dll - 9.0.10 -+sdk\x.y.z\DotnetTools\dotnet-format\dotnet-format.dll - 9.0.100 -+sdk\x.y.z\DotnetTools\dotnet-format\es\dotnet-format.resources.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-format\es\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\es\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\es\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\es\Microsoft.CodeAnalysis.VisualBasic.Worksp - sdk\x.y.z\DotnetTools\dotnet-format\es\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\es\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\es\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\fr\dotnet-format.resources.dll - 9.0.10 -+sdk\x.y.z\DotnetTools\dotnet-format\fr\dotnet-format.resources.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-format\fr\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\fr\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\fr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\fr\Microsoft.CodeAnalysis.Workspaces.MSBuild - sdk\x.y.z\DotnetTools\dotnet-format\fr\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\fr\System.CommandLine.resources.dll - 2.0.0 - sdk\x.y.z\DotnetTools\dotnet-format\Humanizer.dll - 2.14.0 --sdk\x.y.z\DotnetTools\dotnet-format\it\dotnet-format.resources.dll - 9.0.10 -+sdk\x.y.z\DotnetTools\dotnet-format\it\dotnet-format.resources.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-format\it\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\it\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\it\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\it\Microsoft.CodeAnalysis.VisualBasic.Worksp - sdk\x.y.z\DotnetTools\dotnet-format\it\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\it\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\it\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\ja\dotnet-format.resources.dll - 9.0.10 -+sdk\x.y.z\DotnetTools\dotnet-format\ja\dotnet-format.resources.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-format\ja\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\ja\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\ja\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\ja\Microsoft.CodeAnalysis.VisualBasic.Worksp - sdk\x.y.z\DotnetTools\dotnet-format\ja\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\ja\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\ja\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\ko\dotnet-format.resources.dll - 9.0.10 -+sdk\x.y.z\DotnetTools\dotnet-format\ko\dotnet-format.resources.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-format\ko\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\ko\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\ko\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\ko\Microsoft.CodeAnalysis.VisualBasic.Worksp - sdk\x.y.z\DotnetTools\dotnet-format\ko\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\ko\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\ko\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Bcl.AsyncInterfaces.dll - 8.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Bcl.AsyncInterfaces.dll - 9.0.0 - sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Build.Locator.dll - 1.0.0 - sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Build.Tasks.Core.dll - 15.1.0 - sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Build.Utilities.Core.dll - 15.1.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.CodeAnalysis.VisualBasic.Workspace - sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.CodeAnalysis.Workspaces.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.CodeAnalysis.Workspaces.MSBuild.dll - 4.10.0 --sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.DiaSymReader.dll - 2.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.DiaSymReader.dll - 2.1.0 - sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Extensions.DependencyInjection.Abstractions.dll - 9.0.0 - sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Extensions.DependencyInjection.dll - 9.0.0 - sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Extensions.FileSystemGlobbing.dll - 9.0.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.Extensions.Primitives.dll - 9.0.0 - sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.NET.StringTools.dll - 1.0.0 - sdk\x.y.z\DotnetTools\dotnet-format\Microsoft.VisualStudio.Setup.Configuration.Interop.dll - 1.0.0 - sdk\x.y.z\DotnetTools\dotnet-format\Newtonsoft.Json.dll - 13.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\pl\dotnet-format.resources.dll - 9.0.10 -+sdk\x.y.z\DotnetTools\dotnet-format\pl\dotnet-format.resources.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-format\pl\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\pl\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\pl\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\pl\Microsoft.CodeAnalysis.VisualBasic.Worksp - sdk\x.y.z\DotnetTools\dotnet-format\pl\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\pl\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\pl\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\dotnet-format.resources.dll - 9.0.10 -+sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\dotnet-format.resources.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\Microsoft.CodeAnalysis.VisualBasic.Wor - sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\pt-BR\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\ru\dotnet-format.resources.dll - 9.0.10 -+sdk\x.y.z\DotnetTools\dotnet-format\ru\dotnet-format.resources.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-format\ru\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\ru\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\ru\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\ru\Microsoft.CodeAnalysis.VisualBasic.Worksp - sdk\x.y.z\DotnetTools\dotnet-format\ru\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\ru\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\ru\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Diagnostics.EventLog.dll - 8.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Diagnostics.EventLog.Messages.dll - 8.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Security.Cryptography.Pkcs.dll - 7.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Windows.Extensions.dll - 8.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.CodeDom.dll - 7.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Diagnostics.EventLog.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Diagnostics.EventLog.Messages.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Security.Cryptography.Pkcs.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\runtimes\win\lib/netx.y/System.Windows.Extensions.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.CodeDom.dll - 9.0.0 - sdk\x.y.z\DotnetTools\dotnet-format\System.CommandLine.dll - 2.0.0 - sdk\x.y.z\DotnetTools\dotnet-format\System.CommandLine.Rendering.dll - 0.4.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.AttributedModel.dll - 8.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.Convention.dll - 8.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.Hosting.dll - 8.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.Runtime.dll - 8.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.TypedParts.dll - 8.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Configuration.ConfigurationManager.dll - 8.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Diagnostics.EventLog.dll - 8.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.AttributedModel.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.Convention.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.Hosting.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.Runtime.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Composition.TypedParts.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Configuration.ConfigurationManager.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Diagnostics.EventLog.dll - 9.0.0 - sdk\x.y.z\DotnetTools\dotnet-format\System.IO.Pipelines.dll - 8.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Reflection.MetadataLoadContext.dll - 7.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Resources.Extensions.dll - 7.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Cryptography.Pkcs.dll - 7.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Cryptography.ProtectedData.dll - 8.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Cryptography.Xml.dll - 7.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Permissions.dll - 8.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\System.Windows.Extensions.dll - 8.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\tr\dotnet-format.resources.dll - 9.0.10 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Reflection.MetadataLoadContext.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Resources.Extensions.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Cryptography.Pkcs.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Cryptography.ProtectedData.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Cryptography.Xml.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Security.Permissions.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\System.Windows.Extensions.dll - 9.0.0 -+sdk\x.y.z\DotnetTools\dotnet-format\tr\dotnet-format.resources.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-format\tr\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\tr\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\tr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\tr\Microsoft.CodeAnalysis.VisualBasic.Worksp - sdk\x.y.z\DotnetTools\dotnet-format\tr\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\tr\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\tr\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\dotnet-format.resources.dll - 9.0.10 -+sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\dotnet-format.resources.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\Microsoft.CodeAnalysis.VisualBasic.W - sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\Microsoft.CodeAnalysis.Workspaces.MSBuild.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\Microsoft.CodeAnalysis.Workspaces.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\zh-Hans\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\DotnetTools\dotnet-format\zh-Hant\dotnet-format.resources.dll - 9.0.10 -+sdk\x.y.z\DotnetTools\dotnet-format\zh-Hant\dotnet-format.resources.dll - 9.0.100 - sdk\x.y.z\DotnetTools\dotnet-format\zh-Hant\Microsoft.CodeAnalysis.CSharp.Features.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\zh-Hant\Microsoft.CodeAnalysis.CSharp.resources.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-format\zh-Hant\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll - 4.10.0 -@@ ------------ @@ sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.CodeAnalysis - sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.CodeAnalysis.Workspaces.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll - 4.10.0 - sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.CodeAnalysis.Workspaces.MSBuild.dll - 4.10.0 --sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.DiaSymReader.dll - 2.0.0 -+sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.DiaSymReader.dll - 2.1.0 - sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.Extensions.DependencyInjection.Abstractions.dll - 9.0.0 - sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.Extensions.Logging.Abstractions.dll - 9.0.0 - sdk\x.y.z\DotnetTools\dotnet-watch\x.y.z\tools/netx.y/any\Microsoft.VisualStudio.Setup.Configuration.Interop.dll - 1.0.0 -@@ ------------ @@ sdk\x.y.z\es\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 - sdk\x.y.z\es\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 - sdk\x.y.z\es\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 - sdk\x.y.z\es\MSBuild.resources.dll - 15.1.0 --sdk\x.y.z\es\NuGet.Commands.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.Common.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.Configuration.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.Credentials.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.Frameworks.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.LibraryModel.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.Localization.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.PackageManagement.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.Packaging.Core.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.Packaging.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.ProjectModel.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.Protocol.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.Resolver.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.Versioning.resources.dll - 6.0.0 --sdk\x.y.z\es\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 -+sdk\x.y.z\es\NuGet.Commands.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.Common.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.Configuration.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.Credentials.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.Frameworks.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.LibraryModel.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.Localization.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.PackageManagement.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.Packaging.Core.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.Packaging.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.ProjectModel.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.Protocol.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.Resolver.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.Versioning.resources.dll - 6.10.0 -+sdk\x.y.z\es\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 - sdk\x.y.z\es\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\es\Test.Utility.resources.dll - 6.0.0 -+sdk\x.y.z\es\Test.Utility.resources.dll - 6.10.0 - sdk\x.y.z\es\vstest.console.resources.dll - 15.0.0 - sdk\x.y.z\Extensions\cs\Microsoft.TestPlatform.Extensions.BlameDataCollector.resources.dll - 15.0.0 - sdk\x.y.z\Extensions\cs\Microsoft.TestPlatform.Extensions.EventLogCollector.resources.dll - 15.0.0 -@@ ------------ @@ sdk\x.y.z\fr\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 - sdk\x.y.z\fr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 - sdk\x.y.z\fr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 - sdk\x.y.z\fr\MSBuild.resources.dll - 15.1.0 --sdk\x.y.z\fr\NuGet.Commands.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.Common.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.Configuration.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.Credentials.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.Frameworks.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.LibraryModel.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.Localization.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.PackageManagement.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.Packaging.Core.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.Packaging.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.ProjectModel.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.Protocol.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.Resolver.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.Versioning.resources.dll - 6.0.0 --sdk\x.y.z\fr\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 -+sdk\x.y.z\fr\NuGet.Commands.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.Common.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.Configuration.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.Credentials.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.Frameworks.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.LibraryModel.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.Localization.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.PackageManagement.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.Packaging.Core.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.Packaging.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.ProjectModel.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.Protocol.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.Resolver.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.Versioning.resources.dll - 6.10.0 -+sdk\x.y.z\fr\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 - sdk\x.y.z\fr\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\fr\Test.Utility.resources.dll - 6.0.0 -+sdk\x.y.z\fr\Test.Utility.resources.dll - 6.10.0 - sdk\x.y.z\fr\vstest.console.resources.dll - 15.0.0 - sdk\x.y.z\FSharp\cs\FSharp.Build.resources.dll - 12.8.300 - sdk\x.y.z\FSharp\cs\FSharp.Compiler.Interactive.Settings.resources.dll - 12.8.300 -@@ ------------ @@ sdk\x.y.z\it\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 - sdk\x.y.z\it\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 - sdk\x.y.z\it\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 - sdk\x.y.z\it\MSBuild.resources.dll - 15.1.0 --sdk\x.y.z\it\NuGet.Commands.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.Common.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.Configuration.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.Credentials.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.Frameworks.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.LibraryModel.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.Localization.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.PackageManagement.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.Packaging.Core.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.Packaging.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.ProjectModel.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.Protocol.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.Resolver.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.Versioning.resources.dll - 6.0.0 --sdk\x.y.z\it\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 -+sdk\x.y.z\it\NuGet.Commands.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.Common.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.Configuration.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.Credentials.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.Frameworks.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.LibraryModel.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.Localization.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.PackageManagement.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.Packaging.Core.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.Packaging.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.ProjectModel.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.Protocol.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.Resolver.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.Versioning.resources.dll - 6.10.0 -+sdk\x.y.z\it\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 - sdk\x.y.z\it\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\it\Test.Utility.resources.dll - 6.0.0 -+sdk\x.y.z\it\Test.Utility.resources.dll - 6.10.0 - sdk\x.y.z\it\vstest.console.resources.dll - 15.0.0 - sdk\x.y.z\ja\dotnet.resources.dll - 9.0.100 - sdk\x.y.z\ja\Microsoft.Build.resources.dll - 15.1.0 -@@ ------------ @@ sdk\x.y.z\ja\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 - sdk\x.y.z\ja\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 - sdk\x.y.z\ja\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 - sdk\x.y.z\ja\MSBuild.resources.dll - 15.1.0 --sdk\x.y.z\ja\NuGet.Commands.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.Common.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.Configuration.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.Credentials.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.Frameworks.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.LibraryModel.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.Localization.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.PackageManagement.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.Packaging.Core.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.Packaging.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.ProjectModel.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.Protocol.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.Resolver.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.Versioning.resources.dll - 6.0.0 --sdk\x.y.z\ja\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 -+sdk\x.y.z\ja\NuGet.Commands.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.Common.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.Configuration.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.Credentials.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.Frameworks.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.LibraryModel.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.Localization.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.PackageManagement.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.Packaging.Core.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.Packaging.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.ProjectModel.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.Protocol.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.Resolver.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.Versioning.resources.dll - 6.10.0 -+sdk\x.y.z\ja\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 - sdk\x.y.z\ja\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\ja\Test.Utility.resources.dll - 6.0.0 -+sdk\x.y.z\ja\Test.Utility.resources.dll - 6.10.0 - sdk\x.y.z\ja\vstest.console.resources.dll - 15.0.0 - sdk\x.y.z\ko\dotnet.resources.dll - 9.0.100 - sdk\x.y.z\ko\Microsoft.Build.resources.dll - 15.1.0 -@@ ------------ @@ sdk\x.y.z\ko\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 - sdk\x.y.z\ko\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 - sdk\x.y.z\ko\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 - sdk\x.y.z\ko\MSBuild.resources.dll - 15.1.0 --sdk\x.y.z\ko\NuGet.Commands.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.Common.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.Configuration.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.Credentials.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.Frameworks.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.LibraryModel.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.Localization.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.PackageManagement.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.Packaging.Core.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.Packaging.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.ProjectModel.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.Protocol.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.Resolver.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.Versioning.resources.dll - 6.0.0 --sdk\x.y.z\ko\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 -+sdk\x.y.z\ko\NuGet.Commands.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.Common.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.Configuration.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.Credentials.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.Frameworks.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.LibraryModel.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.Localization.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.PackageManagement.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.Packaging.Core.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.Packaging.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.ProjectModel.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.Protocol.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.Resolver.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.Versioning.resources.dll - 6.10.0 -+sdk\x.y.z\ko\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 - sdk\x.y.z\ko\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\ko\Test.Utility.resources.dll - 6.0.0 -+sdk\x.y.z\ko\Test.Utility.resources.dll - 6.10.0 - sdk\x.y.z\ko\vstest.console.resources.dll - 15.0.0 - sdk\x.y.z\Microsoft.ApplicationInsights.dll - 2.22.0 - sdk\x.y.z\Microsoft.AspNetCore.DeveloperCertificates.XPlat.dll - 9.0.0 -@@ ------------ @@ sdk\x.y.z\pl\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 - sdk\x.y.z\pl\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 - sdk\x.y.z\pl\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 - sdk\x.y.z\pl\MSBuild.resources.dll - 15.1.0 --sdk\x.y.z\pl\NuGet.Commands.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.Common.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.Configuration.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.Credentials.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.Frameworks.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.LibraryModel.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.Localization.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.PackageManagement.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.Packaging.Core.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.Packaging.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.ProjectModel.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.Protocol.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.Resolver.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.Versioning.resources.dll - 6.0.0 --sdk\x.y.z\pl\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 -+sdk\x.y.z\pl\NuGet.Commands.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.Common.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.Configuration.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.Credentials.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.Frameworks.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.LibraryModel.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.Localization.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.PackageManagement.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.Packaging.Core.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.Packaging.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.ProjectModel.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.Protocol.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.Resolver.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.Versioning.resources.dll - 6.10.0 -+sdk\x.y.z\pl\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 - sdk\x.y.z\pl\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\pl\Test.Utility.resources.dll - 6.0.0 -+sdk\x.y.z\pl\Test.Utility.resources.dll - 6.10.0 - sdk\x.y.z\pl\vstest.console.resources.dll - 15.0.0 - sdk\x.y.z\pt-BR\dotnet.resources.dll - 9.0.100 - sdk\x.y.z\pt-BR\Microsoft.Build.resources.dll - 15.1.0 -@@ ------------ @@ sdk\x.y.z\pt-BR\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0. - sdk\x.y.z\pt-BR\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 - sdk\x.y.z\pt-BR\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 - sdk\x.y.z\pt-BR\MSBuild.resources.dll - 15.1.0 --sdk\x.y.z\pt-BR\NuGet.Commands.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.Common.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.Configuration.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.Credentials.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.Frameworks.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.LibraryModel.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.Localization.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.PackageManagement.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.Packaging.Core.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.Packaging.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.ProjectModel.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.Protocol.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.Resolver.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.Versioning.resources.dll - 6.0.0 --sdk\x.y.z\pt-BR\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 -+sdk\x.y.z\pt-BR\NuGet.Commands.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.Common.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.Configuration.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.Credentials.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.Frameworks.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.LibraryModel.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.Localization.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.PackageManagement.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.Packaging.Core.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.Packaging.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.ProjectModel.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.Protocol.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.Resolver.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.Versioning.resources.dll - 6.10.0 -+sdk\x.y.z\pt-BR\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 - sdk\x.y.z\pt-BR\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\pt-BR\Test.Utility.resources.dll - 6.0.0 -+sdk\x.y.z\pt-BR\Test.Utility.resources.dll - 6.10.0 - sdk\x.y.z\pt-BR\vstest.console.resources.dll - 15.0.0 - sdk\x.y.z\ref\Microsoft.Build.Framework.dll - 15.1.0 - sdk\x.y.z\ref\Microsoft.Build.Utilities.Core.dll - 15.1.0 -@@ ------------ @@ sdk\x.y.z\ru\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 - sdk\x.y.z\ru\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 - sdk\x.y.z\ru\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 - sdk\x.y.z\ru\MSBuild.resources.dll - 15.1.0 --sdk\x.y.z\ru\NuGet.Commands.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.Common.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.Configuration.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.Credentials.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.Frameworks.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.LibraryModel.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.Localization.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.PackageManagement.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.Packaging.Core.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.Packaging.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.ProjectModel.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.Protocol.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.Resolver.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.Versioning.resources.dll - 6.0.0 --sdk\x.y.z\ru\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 -+sdk\x.y.z\ru\NuGet.Commands.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.Common.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.Configuration.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.Credentials.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.Frameworks.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.LibraryModel.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.Localization.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.PackageManagement.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.Packaging.Core.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.Packaging.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.ProjectModel.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.Protocol.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.Resolver.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.Versioning.resources.dll - 6.10.0 -+sdk\x.y.z\ru\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 - sdk\x.y.z\ru\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\ru\Test.Utility.resources.dll - 6.0.0 -+sdk\x.y.z\ru\Test.Utility.resources.dll - 6.10.0 - sdk\x.y.z\ru\vstest.console.resources.dll - 15.0.0 - sdk\x.y.z\runtimes\win\lib/netx.y/System.Diagnostics.EventLog.dll - 9.0.0 - sdk\x.y.z\runtimes\win\lib/netx.y/System.Diagnostics.EventLog.Messages.dll - 9.0.0 -@@ ------------ @@ sdk\x.y.z\tr\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15.0.0 - sdk\x.y.z\tr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 - sdk\x.y.z\tr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 - sdk\x.y.z\tr\MSBuild.resources.dll - 15.1.0 --sdk\x.y.z\tr\NuGet.Commands.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.Common.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.Configuration.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.Credentials.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.Frameworks.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.LibraryModel.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.Localization.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.PackageManagement.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.Packaging.Core.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.Packaging.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.ProjectModel.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.Protocol.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.Resolver.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.Versioning.resources.dll - 6.0.0 --sdk\x.y.z\tr\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 -+sdk\x.y.z\tr\NuGet.Commands.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.Common.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.Configuration.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.Credentials.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.Frameworks.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.LibraryModel.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.Localization.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.PackageManagement.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.Packaging.Core.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.Packaging.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.ProjectModel.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.Protocol.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.Resolver.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.Versioning.resources.dll - 6.10.0 -+sdk\x.y.z\tr\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 - sdk\x.y.z\tr\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\tr\Test.Utility.resources.dll - 6.0.0 -+sdk\x.y.z\tr\Test.Utility.resources.dll - 6.10.0 - sdk\x.y.z\tr\vstest.console.resources.dll - 15.0.0 - sdk\x.y.z\vstest.console.dll - 15.0.0 - sdk\x.y.z\zh-Hans\dotnet.resources.dll - 9.0.100 -@@ ------------ @@ sdk\x.y.z\zh-Hans\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15. - sdk\x.y.z\zh-Hans\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 - sdk\x.y.z\zh-Hans\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 - sdk\x.y.z\zh-Hans\MSBuild.resources.dll - 15.1.0 --sdk\x.y.z\zh-Hans\NuGet.Commands.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.Common.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.Configuration.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.Credentials.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.Frameworks.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.LibraryModel.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.Localization.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.PackageManagement.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.Packaging.Core.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.Packaging.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.ProjectModel.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.Protocol.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.Resolver.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.Versioning.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hans\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 -+sdk\x.y.z\zh-Hans\NuGet.Commands.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.Common.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.Configuration.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.Credentials.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.Frameworks.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.LibraryModel.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.Localization.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.PackageManagement.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.Packaging.Core.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.Packaging.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.ProjectModel.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.Protocol.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.Resolver.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.Versioning.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hans\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 - sdk\x.y.z\zh-Hans\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\zh-Hans\Test.Utility.resources.dll - 6.0.0 -+sdk\x.y.z\zh-Hans\Test.Utility.resources.dll - 6.10.0 - sdk\x.y.z\zh-Hans\vstest.console.resources.dll - 15.0.0 - sdk\x.y.z\zh-Hant\dotnet.resources.dll - 9.0.100 - sdk\x.y.z\zh-Hant\Microsoft.Build.resources.dll - 15.1.0 -@@ ------------ @@ sdk\x.y.z\zh-Hant\Microsoft.VisualStudio.TestPlatform.Client.resources.dll - 15. - sdk\x.y.z\zh-Hant\Microsoft.VisualStudio.TestPlatform.Common.resources.dll - 15.0.0 - sdk\x.y.z\zh-Hant\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - 15.0.0 - sdk\x.y.z\zh-Hant\MSBuild.resources.dll - 15.1.0 --sdk\x.y.z\zh-Hant\NuGet.Commands.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.Common.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.Configuration.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.Credentials.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.DependencyResolver.Core.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.Frameworks.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.LibraryModel.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.Localization.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.PackageManagement.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.Packaging.Core.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.Packaging.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.ProjectModel.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.Protocol.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.Resolver.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.Versioning.resources.dll - 6.0.0 --sdk\x.y.z\zh-Hant\NuGet.VisualStudio.Contracts.resources.dll - 6.0.0 -+sdk\x.y.z\zh-Hant\NuGet.Commands.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.Common.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.Configuration.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.Credentials.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.DependencyResolver.Core.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.Frameworks.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.LibraryModel.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.Localization.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.PackageManagement.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.Packaging.Core.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.Packaging.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.ProjectModel.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.Protocol.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.Resolver.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.Versioning.resources.dll - 6.10.0 -+sdk\x.y.z\zh-Hant\NuGet.VisualStudio.Contracts.resources.dll - 17.10.0 - sdk\x.y.z\zh-Hant\System.CommandLine.resources.dll - 2.0.0 --sdk\x.y.z\zh-Hant\Test.Utility.resources.dll - 6.0.0 -+sdk\x.y.z\zh-Hant\Test.Utility.resources.dll - 6.10.0 - sdk\x.y.z\zh-Hant\vstest.console.resources.dll - 15.0.0 - shared\Microsoft.AspNetCore.App\x.y.z\Microsoft.AspNetCore.Antiforgery.dll - 9.0.0 - shared\Microsoft.AspNetCore.App\x.y.z\Microsoft.AspNetCore.Authentication.Abstractions.dll - 9.0.0 - diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-win-x64.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-win-x64.diff index e69de29bb2d1..e3af585483e6 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-win-x64.diff +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-win-x64.diff @@ -0,0 +1,269 @@ +diff --git a/msftSdkFiles.txt b/ubSdkFiles.txt +index ------------ +--- a/msftSdkFiles.txt ++++ b/ubSdkFiles.txt +@@ ------------ @@ sdk/x.y.z/Containers/tasks/netx.y/zh-Hant/Microsoft.DotNet.Cli.Utils.resources.d + sdk/x.y.z/Containers/tasks/netx.y/zh-Hant/Microsoft.NET.Build.Containers.resources.dll + sdk/x.y.z/Containers/tasks/netx.y/zh-Hant/System.CommandLine.resources.dll + sdk/x.y.z/cs/dotnet.resources.dll +-sdk/x.y.z/cs/Microsoft.Build.NuGetSdkResolver.resources.dll + sdk/x.y.z/cs/Microsoft.Build.resources.dll + sdk/x.y.z/cs/Microsoft.Build.Tasks.Core.resources.dll + sdk/x.y.z/cs/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ sdk/x.y.z/cs/Microsoft.VisualStudio.TestPlatform.Client.resources.dll + sdk/x.y.z/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/cs/MSBuild.resources.dll +-sdk/x.y.z/cs/NuGet.Build.Tasks.Console.resources.dll +-sdk/x.y.z/cs/NuGet.Build.Tasks.resources.dll +-sdk/x.y.z/cs/NuGet.CommandLine.XPlat.resources.dll ++sdk/x.y.z/cs/NuGet.Build.Tasks.Pack.resources.dll + sdk/x.y.z/cs/NuGet.Commands.resources.dll + sdk/x.y.z/cs/NuGet.Common.resources.dll + sdk/x.y.z/cs/NuGet.Configuration.resources.dll +@@ ------------ @@ sdk/x.y.z/datacollector.dll + sdk/x.y.z/datacollector.dll.config + sdk/x.y.z/datacollector.runtimeconfig.json + sdk/x.y.z/de/dotnet.resources.dll +-sdk/x.y.z/de/Microsoft.Build.NuGetSdkResolver.resources.dll + sdk/x.y.z/de/Microsoft.Build.resources.dll + sdk/x.y.z/de/Microsoft.Build.Tasks.Core.resources.dll + sdk/x.y.z/de/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ sdk/x.y.z/de/Microsoft.VisualStudio.TestPlatform.Client.resources.dll + sdk/x.y.z/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/de/MSBuild.resources.dll +-sdk/x.y.z/de/NuGet.Build.Tasks.Console.resources.dll +-sdk/x.y.z/de/NuGet.Build.Tasks.resources.dll +-sdk/x.y.z/de/NuGet.CommandLine.XPlat.resources.dll ++sdk/x.y.z/de/NuGet.Build.Tasks.Pack.resources.dll + sdk/x.y.z/de/NuGet.Commands.resources.dll + sdk/x.y.z/de/NuGet.Common.resources.dll + sdk/x.y.z/de/NuGet.Configuration.resources.dll +@@ ------------ @@ sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/zh-Hant/Microsoft.Code + sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll + sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/zh-Hant/System.CommandLine.resources.dll + sdk/x.y.z/es/dotnet.resources.dll +-sdk/x.y.z/es/Microsoft.Build.NuGetSdkResolver.resources.dll + sdk/x.y.z/es/Microsoft.Build.resources.dll + sdk/x.y.z/es/Microsoft.Build.Tasks.Core.resources.dll + sdk/x.y.z/es/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ sdk/x.y.z/es/Microsoft.VisualStudio.TestPlatform.Client.resources.dll + sdk/x.y.z/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/es/MSBuild.resources.dll +-sdk/x.y.z/es/NuGet.Build.Tasks.Console.resources.dll +-sdk/x.y.z/es/NuGet.Build.Tasks.resources.dll +-sdk/x.y.z/es/NuGet.CommandLine.XPlat.resources.dll ++sdk/x.y.z/es/NuGet.Build.Tasks.Pack.resources.dll + sdk/x.y.z/es/NuGet.Commands.resources.dll + sdk/x.y.z/es/NuGet.Common.resources.dll + sdk/x.y.z/es/NuGet.Configuration.resources.dll +@@ ------------ @@ sdk/x.y.z/Extensions/zh-Hant/Microsoft.TestPlatform.TestHostRuntimeProvider.reso + sdk/x.y.z/Extensions/zh-Hant/Microsoft.VisualStudio.TestPlatform.Extensions.Html.TestLogger.resources.dll + sdk/x.y.z/Extensions/zh-Hant/Microsoft.VisualStudio.TestPlatform.Extensions.Trx.TestLogger.resources.dll + sdk/x.y.z/fr/dotnet.resources.dll +-sdk/x.y.z/fr/Microsoft.Build.NuGetSdkResolver.resources.dll + sdk/x.y.z/fr/Microsoft.Build.resources.dll + sdk/x.y.z/fr/Microsoft.Build.Tasks.Core.resources.dll + sdk/x.y.z/fr/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ sdk/x.y.z/fr/Microsoft.VisualStudio.TestPlatform.Client.resources.dll + sdk/x.y.z/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/fr/MSBuild.resources.dll +-sdk/x.y.z/fr/NuGet.Build.Tasks.Console.resources.dll +-sdk/x.y.z/fr/NuGet.Build.Tasks.resources.dll +-sdk/x.y.z/fr/NuGet.CommandLine.XPlat.resources.dll ++sdk/x.y.z/fr/NuGet.Build.Tasks.Pack.resources.dll + sdk/x.y.z/fr/NuGet.Commands.resources.dll + sdk/x.y.z/fr/NuGet.Common.resources.dll + sdk/x.y.z/fr/NuGet.Configuration.resources.dll +@@ ------------ @@ sdk/x.y.z/FSharp/zh-Hant/FSharp.Compiler.Service.resources.dll + sdk/x.y.z/FSharp/zh-Hant/FSharp.Core.resources.dll + sdk/x.y.z/FSharp/zh-Hant/FSharp.DependencyManager.Nuget.resources.dll + sdk/x.y.z/it/dotnet.resources.dll +-sdk/x.y.z/it/Microsoft.Build.NuGetSdkResolver.resources.dll + sdk/x.y.z/it/Microsoft.Build.resources.dll + sdk/x.y.z/it/Microsoft.Build.Tasks.Core.resources.dll + sdk/x.y.z/it/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ sdk/x.y.z/it/Microsoft.VisualStudio.TestPlatform.Client.resources.dll + sdk/x.y.z/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/it/MSBuild.resources.dll +-sdk/x.y.z/it/NuGet.Build.Tasks.Console.resources.dll +-sdk/x.y.z/it/NuGet.Build.Tasks.resources.dll +-sdk/x.y.z/it/NuGet.CommandLine.XPlat.resources.dll ++sdk/x.y.z/it/NuGet.Build.Tasks.Pack.resources.dll + sdk/x.y.z/it/NuGet.Commands.resources.dll + sdk/x.y.z/it/NuGet.Common.resources.dll + sdk/x.y.z/it/NuGet.Configuration.resources.dll +@@ ------------ @@ sdk/x.y.z/it/System.CommandLine.resources.dll + sdk/x.y.z/it/Test.Utility.resources.dll + sdk/x.y.z/it/vstest.console.resources.dll + sdk/x.y.z/ja/dotnet.resources.dll +-sdk/x.y.z/ja/Microsoft.Build.NuGetSdkResolver.resources.dll + sdk/x.y.z/ja/Microsoft.Build.resources.dll + sdk/x.y.z/ja/Microsoft.Build.Tasks.Core.resources.dll + sdk/x.y.z/ja/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ sdk/x.y.z/ja/Microsoft.VisualStudio.TestPlatform.Client.resources.dll + sdk/x.y.z/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/ja/MSBuild.resources.dll +-sdk/x.y.z/ja/NuGet.Build.Tasks.Console.resources.dll +-sdk/x.y.z/ja/NuGet.Build.Tasks.resources.dll +-sdk/x.y.z/ja/NuGet.CommandLine.XPlat.resources.dll ++sdk/x.y.z/ja/NuGet.Build.Tasks.Pack.resources.dll + sdk/x.y.z/ja/NuGet.Commands.resources.dll + sdk/x.y.z/ja/NuGet.Common.resources.dll + sdk/x.y.z/ja/NuGet.Configuration.resources.dll +@@ ------------ @@ sdk/x.y.z/ja/Test.Utility.resources.dll + sdk/x.y.z/ja/vstest.console.resources.dll + sdk/x.y.z/KnownWorkloadManifests.txt + sdk/x.y.z/ko/dotnet.resources.dll +-sdk/x.y.z/ko/Microsoft.Build.NuGetSdkResolver.resources.dll + sdk/x.y.z/ko/Microsoft.Build.resources.dll + sdk/x.y.z/ko/Microsoft.Build.Tasks.Core.resources.dll + sdk/x.y.z/ko/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ sdk/x.y.z/ko/Microsoft.VisualStudio.TestPlatform.Client.resources.dll + sdk/x.y.z/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/ko/MSBuild.resources.dll +-sdk/x.y.z/ko/NuGet.Build.Tasks.Console.resources.dll +-sdk/x.y.z/ko/NuGet.Build.Tasks.resources.dll +-sdk/x.y.z/ko/NuGet.CommandLine.XPlat.resources.dll ++sdk/x.y.z/ko/NuGet.Build.Tasks.Pack.resources.dll + sdk/x.y.z/ko/NuGet.Commands.resources.dll + sdk/x.y.z/ko/NuGet.Common.resources.dll + sdk/x.y.z/ko/NuGet.Configuration.resources.dll +@@ ------------ @@ sdk/x.y.z/NuGet.RestoreEx.targets + sdk/x.y.z/NuGet.targets + sdk/x.y.z/NuGet.Versioning.dll + sdk/x.y.z/pl/dotnet.resources.dll +-sdk/x.y.z/pl/Microsoft.Build.NuGetSdkResolver.resources.dll + sdk/x.y.z/pl/Microsoft.Build.resources.dll + sdk/x.y.z/pl/Microsoft.Build.Tasks.Core.resources.dll + sdk/x.y.z/pl/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ sdk/x.y.z/pl/Microsoft.VisualStudio.TestPlatform.Client.resources.dll + sdk/x.y.z/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/pl/MSBuild.resources.dll +-sdk/x.y.z/pl/NuGet.Build.Tasks.Console.resources.dll +-sdk/x.y.z/pl/NuGet.Build.Tasks.resources.dll +-sdk/x.y.z/pl/NuGet.CommandLine.XPlat.resources.dll ++sdk/x.y.z/pl/NuGet.Build.Tasks.Pack.resources.dll + sdk/x.y.z/pl/NuGet.Commands.resources.dll + sdk/x.y.z/pl/NuGet.Common.resources.dll + sdk/x.y.z/pl/NuGet.Configuration.resources.dll +@@ ------------ @@ sdk/x.y.z/pl/Test.Utility.resources.dll + sdk/x.y.z/pl/vstest.console.resources.dll + sdk/x.y.z/PortableRuntimeIdentifierGraph.json + sdk/x.y.z/pt-BR/dotnet.resources.dll +-sdk/x.y.z/pt-BR/Microsoft.Build.NuGetSdkResolver.resources.dll + sdk/x.y.z/pt-BR/Microsoft.Build.resources.dll + sdk/x.y.z/pt-BR/Microsoft.Build.Tasks.Core.resources.dll + sdk/x.y.z/pt-BR/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ sdk/x.y.z/pt-BR/Microsoft.VisualStudio.TestPlatform.Client.resources.dll + sdk/x.y.z/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/pt-BR/MSBuild.resources.dll +-sdk/x.y.z/pt-BR/NuGet.Build.Tasks.Console.resources.dll +-sdk/x.y.z/pt-BR/NuGet.Build.Tasks.resources.dll +-sdk/x.y.z/pt-BR/NuGet.CommandLine.XPlat.resources.dll ++sdk/x.y.z/pt-BR/NuGet.Build.Tasks.Pack.resources.dll + sdk/x.y.z/pt-BR/NuGet.Commands.resources.dll + sdk/x.y.z/pt-BR/NuGet.Common.resources.dll + sdk/x.y.z/pt-BR/NuGet.Configuration.resources.dll +@@ ------------ @@ sdk/x.y.z/Roslyn/tr/Microsoft.Build.Tasks.CodeAnalysis.resources.dll + sdk/x.y.z/Roslyn/zh-Hans/Microsoft.Build.Tasks.CodeAnalysis.resources.dll + sdk/x.y.z/Roslyn/zh-Hant/Microsoft.Build.Tasks.CodeAnalysis.resources.dll + sdk/x.y.z/ru/dotnet.resources.dll +-sdk/x.y.z/ru/Microsoft.Build.NuGetSdkResolver.resources.dll + sdk/x.y.z/ru/Microsoft.Build.resources.dll + sdk/x.y.z/ru/Microsoft.Build.Tasks.Core.resources.dll + sdk/x.y.z/ru/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ sdk/x.y.z/ru/Microsoft.VisualStudio.TestPlatform.Client.resources.dll + sdk/x.y.z/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/ru/MSBuild.resources.dll +-sdk/x.y.z/ru/NuGet.Build.Tasks.Console.resources.dll +-sdk/x.y.z/ru/NuGet.Build.Tasks.resources.dll +-sdk/x.y.z/ru/NuGet.CommandLine.XPlat.resources.dll ++sdk/x.y.z/ru/NuGet.Build.Tasks.Pack.resources.dll + sdk/x.y.z/ru/NuGet.Commands.resources.dll + sdk/x.y.z/ru/NuGet.Common.resources.dll + sdk/x.y.z/ru/NuGet.Configuration.resources.dll +@@ ------------ @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.Stati + sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.References.targets + sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ScopedCss.5_0.targets + sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ScopedCss.targets +-sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ServiceWorkerAssetsManifest.targets ++sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ServiceWorker.targets + sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.SingleTargeting.targets + sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.targets + sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Sdk.StaticWebAssets.CurrentVersion.props +@@ ------------ @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Web/tools/net472/Microsoft.NET.Sdk.Web.Tasks.dl + sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Web/tools/netx.y/Microsoft.NET.Sdk.Web.Tasks.dll + sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/Sdk/Sdk.props + sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/Sdk/Sdk.targets ++sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/targets/Microsoft.NET.Sdk.WebAssembly.6_0.temp.targets ++sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/targets/Microsoft.NET.Sdk.WebAssembly.9_0.temp.targets + sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/tools/net472/Microsoft.NET.Sdk.WebAssembly.Tasks.dll + sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/tools/netx.y/Microsoft.NET.Sdk.WebAssembly.Tasks.dll + sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/LICENSE.TXT +@@ ------------ @@ sdk/x.y.z/TestHostNetFramework/zh-Hant/Microsoft.TestPlatform.Utilities.resource + sdk/x.y.z/TestHostNetFramework/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/TestHostNetFramework/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/tr/dotnet.resources.dll +-sdk/x.y.z/tr/Microsoft.Build.NuGetSdkResolver.resources.dll + sdk/x.y.z/tr/Microsoft.Build.resources.dll + sdk/x.y.z/tr/Microsoft.Build.Tasks.Core.resources.dll + sdk/x.y.z/tr/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ sdk/x.y.z/tr/Microsoft.VisualStudio.TestPlatform.Client.resources.dll + sdk/x.y.z/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/tr/MSBuild.resources.dll +-sdk/x.y.z/tr/NuGet.Build.Tasks.Console.resources.dll +-sdk/x.y.z/tr/NuGet.Build.Tasks.resources.dll +-sdk/x.y.z/tr/NuGet.CommandLine.XPlat.resources.dll ++sdk/x.y.z/tr/NuGet.Build.Tasks.Pack.resources.dll + sdk/x.y.z/tr/NuGet.Commands.resources.dll + sdk/x.y.z/tr/NuGet.Common.resources.dll + sdk/x.y.z/tr/NuGet.Configuration.resources.dll +@@ ------------ @@ sdk/x.y.z/vstest.console.dll + sdk/x.y.z/vstest.console.dll.config + sdk/x.y.z/vstest.console.runtimeconfig.json + sdk/x.y.z/zh-Hans/dotnet.resources.dll +-sdk/x.y.z/zh-Hans/Microsoft.Build.NuGetSdkResolver.resources.dll + sdk/x.y.z/zh-Hans/Microsoft.Build.resources.dll + sdk/x.y.z/zh-Hans/Microsoft.Build.Tasks.Core.resources.dll + sdk/x.y.z/zh-Hans/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ sdk/x.y.z/zh-Hans/Microsoft.VisualStudio.TestPlatform.Client.resources.dll + sdk/x.y.z/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/zh-Hans/MSBuild.resources.dll +-sdk/x.y.z/zh-Hans/NuGet.Build.Tasks.Console.resources.dll +-sdk/x.y.z/zh-Hans/NuGet.Build.Tasks.resources.dll +-sdk/x.y.z/zh-Hans/NuGet.CommandLine.XPlat.resources.dll ++sdk/x.y.z/zh-Hans/NuGet.Build.Tasks.Pack.resources.dll + sdk/x.y.z/zh-Hans/NuGet.Commands.resources.dll + sdk/x.y.z/zh-Hans/NuGet.Common.resources.dll + sdk/x.y.z/zh-Hans/NuGet.Configuration.resources.dll +@@ ------------ @@ sdk/x.y.z/zh-Hans/System.CommandLine.resources.dll + sdk/x.y.z/zh-Hans/Test.Utility.resources.dll + sdk/x.y.z/zh-Hans/vstest.console.resources.dll + sdk/x.y.z/zh-Hant/dotnet.resources.dll +-sdk/x.y.z/zh-Hant/Microsoft.Build.NuGetSdkResolver.resources.dll + sdk/x.y.z/zh-Hant/Microsoft.Build.resources.dll + sdk/x.y.z/zh-Hant/Microsoft.Build.Tasks.Core.resources.dll + sdk/x.y.z/zh-Hant/Microsoft.Build.Utilities.Core.resources.dll +@@ ------------ @@ sdk/x.y.z/zh-Hant/Microsoft.VisualStudio.TestPlatform.Client.resources.dll + sdk/x.y.z/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll + sdk/x.y.z/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll + sdk/x.y.z/zh-Hant/MSBuild.resources.dll +-sdk/x.y.z/zh-Hant/NuGet.Build.Tasks.Console.resources.dll +-sdk/x.y.z/zh-Hant/NuGet.Build.Tasks.resources.dll +-sdk/x.y.z/zh-Hant/NuGet.CommandLine.XPlat.resources.dll ++sdk/x.y.z/zh-Hant/NuGet.Build.Tasks.Pack.resources.dll + sdk/x.y.z/zh-Hant/NuGet.Commands.resources.dll + sdk/x.y.z/zh-Hant/NuGet.Common.resources.dll + sdk/x.y.z/zh-Hant/NuGet.Configuration.resources.dll diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/xunit.runner.json b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/xunit.runner.json new file mode 100644 index 000000000000..6c0d1e49be3e --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/xunit.runner.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://xunit.net/schema/current/xunit.runner.schema.json", + "diagnosticMessages": true +} From a82bdc9bf3923a5e49420451d99b1e95ecec3daf Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Thu, 21 Mar 2024 10:03:54 -0700 Subject: [PATCH 16/41] PR feedback - Move Directory.Build.props to build UB tests with arcade - Use msbuild task to run tests rather than exec - Update old condition for building UB tests --- .../eng/unifiedBuildValidation.targets | 20 +++++++++++-------- .../content/repo-projects/installer.proj | 2 +- .../Directory.Build.props | 0 3 files changed, 13 insertions(+), 9 deletions(-) rename src/SourceBuild/content/test/{ => Microsoft.DotNet.SourceBuild.SmokeTests}/Directory.Build.props (100%) diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index b180b6572cf3..2796305e227c 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -9,18 +9,22 @@ AfterTargets="Build" DependsOnTargets="DetermineSourceBuiltSdkVersion"> + + <_UnifiedBuildValidationEnvVar Include="UNIFIED_BUILD_VALIDATION_SDK_TARBALL_PATH" Value="$(SdkTarballPath)" /> + <_UnifiedBuildValidationEnvVar Include="UNIFIED_BUILD_VALIDATION_TARGET_RID" Value="$(TargetRid)" /> + <_UnifiedBuildValidationEnvVar Include="UNIFIED_BUILD_VALIDATION_PORTABLE_RID" Value="$(PortableRid)" /> + <_UnifiedBuildValidationEnvVar Include="UNIFIED_BUILD_VALIDATION_BUILD_VERSION" Value="$(SourceBuiltSdkVersion)" /> + + %(SdkTarballItem.Identity) + <_EnvVarRunSettingsPrefix>RunConfiguration.EnvironmentVariables + @(_UnifiedBuildValidationEnvVar->'$(RunConfiguration.EnvironmentVariables).%(Identity)=%(Value)') - + diff --git a/src/SourceBuild/content/repo-projects/installer.proj b/src/SourceBuild/content/repo-projects/installer.proj index 25bf82b69ca6..78459f9977e0 100644 --- a/src/SourceBuild/content/repo-projects/installer.proj +++ b/src/SourceBuild/content/repo-projects/installer.proj @@ -148,6 +148,6 @@ UseHardlinksIfPossible="true" /> - + diff --git a/src/SourceBuild/content/test/Directory.Build.props b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Directory.Build.props similarity index 100% rename from src/SourceBuild/content/test/Directory.Build.props rename to src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Directory.Build.props From 2a70b8a4dca4045199fde6cadd11806d272fd19b Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Fri, 22 Mar 2024 10:37:04 -0700 Subject: [PATCH 17/41] Use one env var to work around msbuild escaping --- src/SourceBuild/content/Directory.Build.props | 3 +-- .../content/eng/unifiedBuildValidation.targets | 16 ++++++++++------ .../Config.cs | 17 ++++++++++------- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/SourceBuild/content/Directory.Build.props b/src/SourceBuild/content/Directory.Build.props index cdc0c6e87af7..89749fe65848 100644 --- a/src/SourceBuild/content/Directory.Build.props +++ b/src/SourceBuild/content/Directory.Build.props @@ -34,7 +34,7 @@ runtime - @@ -205,7 +205,6 @@ $([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'Microsoft.DotNet.SourceBuild.Tasks.XPlat', '$(Configuration)', 'Microsoft.DotNet.SourceBuild.Tasks.XPlat.dll')) $([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'Microsoft.DotNet.SourceBuild.Tasks.LeakDetection', '$(Configuration)', 'Microsoft.DotNet.SourceBuild.Tasks.LeakDetection.dll')) - $([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff', '$(Configuration)', 'Microsoft.DotNet.SourceBuild.Tasks.SdkArchiveDiff.dll')) diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index 2796305e227c..6da0c83ab870 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -2,7 +2,7 @@ $([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'test', 'Microsoft.DotNet.UnifiedBuild.Tests')) - $([MSBuild]::NormalizeDirectory('$(UnifiedBuildValidationTestsDir)', 'Microsoft.DotNet.UnifiedBuild.Tests')) + $([MSBuild]::NormalizePath('$(UnifiedBuildValidationTestsDir)', 'Microsoft.DotNet.UnifiedBuild.Tests.csproj')) %(SdkTarballItem.Identity) - <_EnvVarRunSettingsPrefix>RunConfiguration.EnvironmentVariables - @(_UnifiedBuildValidationEnvVar->'$(RunConfiguration.EnvironmentVariables).%(Identity)=%(Value)') + @(_UnifiedBuildValidationEnvVar->'%(Identity)=%(Value)') + RunConfiguration.EnvironmentVariables.UNIFIED_BUILD_VALIDATION_ARGS=$([MSBuild]::Escape($(EnvironmentVariableRunSettings))) - + diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs index 532046d57ce3..c2df0ecb79c8 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs @@ -4,6 +4,7 @@ using System; using System.IO; +using System.Linq; using System.Net; using System.Net.Http; using System.Threading.Tasks; @@ -11,20 +12,22 @@ using Xunit.Sdk; namespace Microsoft.DotNet.SourceBuild.SmokeTests; - public class Config : IDisposable { IMessageSink _sink; public Config(IMessageSink sink) { _sink = sink; - BuildVersion = Environment.GetEnvironmentVariable(BuildVersionEnv) ?? throw new InvalidOperationException($"'{BuildVersionEnv}' must be specified"); - PortableRid = Environment.GetEnvironmentVariable(PortableRidEnv) ?? throw new InvalidOperationException($"'{PortableRidEnv}' must be specified"); - UbSdkArchivePath = Environment.GetEnvironmentVariable(UbSdkTarballPathEnv) ?? throw new InvalidOperationException($"'{UbSdkTarballPathEnv}' must be specified"); - TargetRid = Environment.GetEnvironmentVariable(TargetRidEnv) ?? throw new InvalidOperationException($"'{TargetRidEnv}' must be specified"); + sink.OnMessage(new DiagnosticMessage($"Environment: '{Environment.GetEnvironmentVariable("UNIFIED_BUILD_VALIDATION_ARGS")}'")); + var env = Environment.GetEnvironmentVariable("UNIFIED_BUILD_VALIDATION_ARGS") ?? throw new InvalidOperationException("UNIFIED_BUILD_VALIDATION_ARGS must be specified"); + var envDict = env.Split(';').Select(s => s.Split('=')).ToDictionary(s => s[0], s => s[1]); + + BuildVersion = envDict[BuildVersionEnv]; + PortableRid = envDict[PortableRidEnv]; + UbSdkArchivePath = envDict[UbSdkTarballPathEnv]; + TargetRid = envDict[TargetRidEnv]; TargetArchitecture = TargetRid.Split('-')[1]; - WarnOnSdkContentDiffs = bool.TryParse(Environment.GetEnvironmentVariable(WarnSdkContentDiffsEnv), out bool warnOnSdkContentDiffs) && warnOnSdkContentDiffs; - MsftSdkArchivePath = Environment.GetEnvironmentVariable(MsftSdkTarballPathEnv) ?? DownloadMsftSdkArchive().Result; + MsftSdkArchivePath = envDict.TryGetValue(MsftSdkTarballPathEnv, out var msftSdkPath) ? msftSdkPath : DownloadMsftSdkArchive().Result; } public const string BuildVersionEnv = "UNIFIED_BUILD_VALIDATION_BUILD_VERSION"; From b2f91942f20f675c756a15b3adadcdec4728be05 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Mon, 25 Mar 2024 10:32:32 -0700 Subject: [PATCH 18/41] Apply suggestions from code review Co-authored-by: Viktor Hofer --- src/SourceBuild/content/eng/unifiedBuildValidation.targets | 2 -- .../Microsoft.DotNet.UnifiedBuild.Tests.csproj | 6 +----- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index 6da0c83ab870..f3d414a43c4f 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -25,8 +25,6 @@ diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index 817f4d57d3df..25a393e3bad3 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -1,16 +1,12 @@ - net9.0 + $(NetCurrent) enable - false $(DefaultExcludesInProjectFolder);assets/**/* - - - From 01e368ff714dfb1bfcec2eca44832f76c3df7d8d Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Mon, 25 Mar 2024 14:12:53 -0700 Subject: [PATCH 19/41] PR feedback - Integrate runtime host config settings instead of EnvVars - Move version to Versions.props --- src/SourceBuild/content/eng/Versions.props | 1 + .../eng/unifiedBuildValidation.targets | 29 ++++++++++------ .../Config.cs | 33 ++++++++----------- ...Microsoft.DotNet.UnifiedBuild.Tests.csproj | 25 +++++++++++--- 4 files changed, 54 insertions(+), 34 deletions(-) diff --git a/src/SourceBuild/content/eng/Versions.props b/src/SourceBuild/content/eng/Versions.props index 3bf1c64c98b1..56b275402442 100644 --- a/src/SourceBuild/content/eng/Versions.props +++ b/src/SourceBuild/content/eng/Versions.props @@ -32,5 +32,6 @@ 9.0.0-preview.2.24128.5 2.0.0-beta4.24126.1 + 7.0.0 diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index f3d414a43c4f..43293dfce9a8 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -9,24 +9,33 @@ AfterTargets="Build" DependsOnTargets="DetermineSourceBuiltSdkVersion"> - - <_UnifiedBuildValidationEnvVar Include="UNIFIED_BUILD_VALIDATION_SDK_TARBALL_PATH" Value="$(SdkTarballPath)" /> - <_UnifiedBuildValidationEnvVar Include="UNIFIED_BUILD_VALIDATION_TARGET_RID" Value="$(TargetRid)" /> - <_UnifiedBuildValidationEnvVar Include="UNIFIED_BUILD_VALIDATION_PORTABLE_RID" Value="$(PortableRid)" /> - <_UnifiedBuildValidationEnvVar Include="UNIFIED_BUILD_VALIDATION_BUILD_VERSION" Value="$(SourceBuiltSdkVersion)" /> - - %(SdkTarballItem.Identity) - @(_UnifiedBuildValidationEnvVar->'%(Identity)=%(Value)') - RunConfiguration.EnvironmentVariables.UNIFIED_BUILD_VALIDATION_ARGS=$([MSBuild]::Escape($(EnvironmentVariableRunSettings))) + + + $(SdkTarballPath) + + + $(TargetRid) + + + $(PortableRid) + + + $(SourceBuiltSdkVersion) + + + + Microsoft_DotNet_UnifiedBuild_Tests_UbSdkArchivePath=$(SdkTarballPath); + Microsoft_DotNet_UnifiedBuild_Tests_TargetRid=$(TargetRid); + Microsoft_DotNet_UnifiedBuild_Tests_PortableRid=$(PortableRid); + Microsoft_DotNet_UnifiedBuild_Tests_SourceBuiltSdkVersion=$(SourceBuiltSdkVersion);" /> diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs index c2df0ecb79c8..e132b997ceb1 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs @@ -18,29 +18,24 @@ public class Config : IDisposable public Config(IMessageSink sink) { _sink = sink; - sink.OnMessage(new DiagnosticMessage($"Environment: '{Environment.GetEnvironmentVariable("UNIFIED_BUILD_VALIDATION_ARGS")}'")); - var env = Environment.GetEnvironmentVariable("UNIFIED_BUILD_VALIDATION_ARGS") ?? throw new InvalidOperationException("UNIFIED_BUILD_VALIDATION_ARGS must be specified"); - var envDict = env.Split(';').Select(s => s.Split('=')).ToDictionary(s => s[0], s => s[1]); - - BuildVersion = envDict[BuildVersionEnv]; - PortableRid = envDict[PortableRidEnv]; - UbSdkArchivePath = envDict[UbSdkTarballPathEnv]; - TargetRid = envDict[TargetRidEnv]; + UbBuildVersion = AppContext.GetSwitch(BuildVersionSwitch); + ConfigPrefix = AppContext.GetSwitch(ConfigPrefixSwitch); + TargetRid = AppContext.GetSwitch(TargetRidSwitch); + PortableRid = AppContext.GetSwitch(PortableRidSwitch); + UbSdkArchivePath = AppContext.GetSwitch(UbSdkArchivePathSwitch); TargetArchitecture = TargetRid.Split('-')[1]; - MsftSdkArchivePath = envDict.TryGetValue(MsftSdkTarballPathEnv, out var msftSdkPath) ? msftSdkPath : DownloadMsftSdkArchive().Result; + MsftSdkArchivePath = AppContext.GetSwitch(MsftSdkArchivePathSwitch) ?? DownloadMsftSdkArchive().Result; } - public const string BuildVersionEnv = "UNIFIED_BUILD_VALIDATION_BUILD_VERSION"; - public const string MsftSdkTarballPathEnv = "UNIFIED_BUILD_VALIDATION_MSFT_SDK_TARBALL_PATH"; - public const string PortableRidEnv = "UNIFIED_BUILD_VALIDATION_PORTABLE_RID"; - public const string PrereqsPathEnv = "UNIFIED_BUILD_VALIDATION_PREREQS_PATH"; - public const string UbSdkTarballPathEnv = "UNIFIED_BUILD_VALIDATION_SDK_TARBALL_PATH"; - public const string SourceBuiltArtifactsPathEnv = "UNIFIED_BUILD_VALIDATION_SOURCEBUILT_ARTIFACTS_PATH"; - public const string TargetRidEnv = "UNIFIED_BUILD_VALIDATION_TARGET_RID"; - public const string WarnSdkContentDiffsEnv = "UNIFIED_BUILD_VALIDATION_WARN_SDK_CONTENT_DIFFS"; + public const string ConfigSwitchPrefix = "Microsoft.DotNet.UnifiedBuild.Tests."; + public const string BuildVersionSwitch = ConfigSwitchPrefix + nameof(UbBuildVersion); + public const string TargetRidSwitch = ConfigSwitchPrefix + nameof(TargetRid); + public const string PortableRidSwitch = ConfigSwitchPrefix + nameof(PortableRid); + public const string UbSdkArchivePathSwitch = ConfigSwitchPrefix + nameof(UbSdkArchivePath); + public const string MsftSdkArchivePathSwitch = ConfigSwitchPrefix + nameof(MsftSdkArchivePath); public string? MsftSdkArchivePath { get; } - public string BuildVersion { get; } + public string UbBuildVersion { get; } public string PortableRid { get; } public string UbSdkArchivePath { get; } public string TargetRid { get; } @@ -60,7 +55,7 @@ static string GetArchiveExtension(string path) public async Task DownloadMsftSdkArchive() { var client = new HttpClient(new HttpClientHandler() { AllowAutoRedirect = false }); - var channel = BuildVersion[..5] + "xx"; + var channel = UbBuildVersion[..5] + "xx"; var akaMsUrl = $"https://aka.ms/dotnet/{channel}/daily/dotnet-sdk-{TargetRid}{GetArchiveExtension(UbSdkArchivePath)}"; _sink.OnMessage(new DiagnosticMessage($"Downloading latest sdk from '{akaMsUrl}'")); var redirectResponse = await client.GetAsync(akaMsUrl); diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index 25a393e3bad3..824df8c76ea4 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -1,4 +1,4 @@ - + $(NetCurrent) @@ -7,14 +7,29 @@ - - + - + + + + $(Microsoft_DotNet_UnifiedBuild_Tests_TargetRid) + + + $(Microsoft_DotNet_UnifiedBuild_Tests_PortableRid) + + + $(Microsoft_DotNet_UnifiedBuild_Tests_UbBuildVersion) + + + $(Microsoft_DotNet_UnifiedBuild_Tests_UbSdkArchivePath) + + + $(Microsoft_DotNet_UnifiedBuild_Tests_MsftSdkArchivePath) + + From 1d0b68be8bbf2b793d3372612ad54aab99d805dd Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Tue, 26 Mar 2024 13:59:50 -0700 Subject: [PATCH 20/41] PR Feedback: Use Arcade SDK to get test parameters without passing from outer build --- .../content/Directory.Build.targets | 1 + .../content/eng/build.sourcebuild.targets | 3 +- .../eng/unifiedBuildValidation.targets | 25 +- .../content/test/Directory.Build.props | 2 + .../Config.cs | 11 +- ...Microsoft.DotNet.UnifiedBuild.Tests.csproj | 29 +- .../SdkContentTests.cs | 4 +- .../baselines/MsftToUbSdkFiles-win-x64.diff | 273 +----------------- 8 files changed, 37 insertions(+), 311 deletions(-) create mode 100644 src/SourceBuild/content/test/Directory.Build.props diff --git a/src/SourceBuild/content/Directory.Build.targets b/src/SourceBuild/content/Directory.Build.targets index 9ebfcf3bbfda..94b538590428 100644 --- a/src/SourceBuild/content/Directory.Build.targets +++ b/src/SourceBuild/content/Directory.Build.targets @@ -19,6 +19,7 @@ --> %(SdkTarballItem.Filename)%(SdkTarballItem.Extension) + %(SdkTarballItem.Identity) $(SdkFilename.Replace('$(SdkFilenamePrefix)','').Replace('-$(TargetRid)$(ArchiveExtension)','')) diff --git a/src/SourceBuild/content/eng/build.sourcebuild.targets b/src/SourceBuild/content/eng/build.sourcebuild.targets index a05905856cf0..daaadbc72955 100644 --- a/src/SourceBuild/content/eng/build.sourcebuild.targets +++ b/src/SourceBuild/content/eng/build.sourcebuild.targets @@ -40,11 +40,10 @@ $(BaseIntermediateOutputPath)SdkSymbols $(BaseIntermediateOutputPath)Sdk - %(SdkTarballItem.Identity) - + - - %(SdkTarballItem.Identity) - - - - - $(SdkTarballPath) - - - $(TargetRid) - - - $(PortableRid) - - - $(SourceBuiltSdkVersion) - - - + VSTestLogger=trx;" /> diff --git a/src/SourceBuild/content/test/Directory.Build.props b/src/SourceBuild/content/test/Directory.Build.props new file mode 100644 index 000000000000..8c119d5413b5 --- /dev/null +++ b/src/SourceBuild/content/test/Directory.Build.props @@ -0,0 +1,2 @@ + + diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs index e132b997ceb1..76b81ec38dca 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs @@ -18,13 +18,12 @@ public class Config : IDisposable public Config(IMessageSink sink) { _sink = sink; - UbBuildVersion = AppContext.GetSwitch(BuildVersionSwitch); - ConfigPrefix = AppContext.GetSwitch(ConfigPrefixSwitch); - TargetRid = AppContext.GetSwitch(TargetRidSwitch); - PortableRid = AppContext.GetSwitch(PortableRidSwitch); - UbSdkArchivePath = AppContext.GetSwitch(UbSdkArchivePathSwitch); + UbBuildVersion = (string)AppContext.GetData(BuildVersionSwitch); + TargetRid = (string)AppContext.GetData(TargetRidSwitch); + PortableRid = (string)AppContext.GetData(PortableRidSwitch); + UbSdkArchivePath = (string)AppContext.GetData(UbSdkArchivePathSwitch); TargetArchitecture = TargetRid.Split('-')[1]; - MsftSdkArchivePath = AppContext.GetSwitch(MsftSdkArchivePathSwitch) ?? DownloadMsftSdkArchive().Result; + MsftSdkArchivePath = AppContext.GetData(MsftSdkArchivePathSwitch) as string ?? DownloadMsftSdkArchive().Result; } public const string ConfigSwitchPrefix = "Microsoft.DotNet.UnifiedBuild.Tests."; diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index 824df8c76ea4..6e47edcf5585 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -1,5 +1,7 @@  - + + + $(NetCurrent) enable @@ -15,21 +17,24 @@ - + + + + $(SdkTarballPath) + - $(Microsoft_DotNet_UnifiedBuild_Tests_TargetRid) + $(TargetRid) - $(Microsoft_DotNet_UnifiedBuild_Tests_PortableRid) + $(PortableRid) - $(Microsoft_DotNet_UnifiedBuild_Tests_UbBuildVersion) + $(SourceBuiltSdkVersion) - - $(Microsoft_DotNet_UnifiedBuild_Tests_UbSdkArchivePath) - - - $(Microsoft_DotNet_UnifiedBuild_Tests_MsftSdkArchivePath) - - + + + + diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs index 6c6b57bd8111..6b64deb555ef 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkContentTests.cs @@ -23,7 +23,7 @@ public class SdkContentTests : TestBase { Exclusions Exclusions; public SdkContentTests(ITestOutputHelper outputHelper, Config config) : base(outputHelper, config) - { + { Exclusions = new(Config.TargetRid); } @@ -196,7 +196,7 @@ private void WriteTarballFileList(string? tarballPath, string outputFileName, bo } string fileListing = Utilities.GetTarballContentNames(tarballPath).Aggregate((a, b) => $"{a}{Environment.NewLine}{b}"); - fileListing = BaselineHelper.RemoveRids(fileListing, Config.PortableRidEnv, Config.TargetRid, isPortable); + fileListing = BaselineHelper.RemoveRids(fileListing, Config.PortableRid, Config.TargetRid, isPortable); fileListing = BaselineHelper.RemoveVersions(fileListing); IEnumerable files = fileListing.Split(Environment.NewLine).OrderBy(path => path); files = Exclusions.RemoveContentDiffFileExclusions(files, sdkType); diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-win-x64.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-win-x64.diff index e3af585483e6..86499f04c261 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-win-x64.diff +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-win-x64.diff @@ -2,268 +2,11 @@ diff --git a/msftSdkFiles.txt b/ubSdkFiles.txt index ------------ --- a/msftSdkFiles.txt +++ b/ubSdkFiles.txt -@@ ------------ @@ sdk/x.y.z/Containers/tasks/netx.y/zh-Hant/Microsoft.DotNet.Cli.Utils.resources.d - sdk/x.y.z/Containers/tasks/netx.y/zh-Hant/Microsoft.NET.Build.Containers.resources.dll - sdk/x.y.z/Containers/tasks/netx.y/zh-Hant/System.CommandLine.resources.dll - sdk/x.y.z/cs/dotnet.resources.dll --sdk/x.y.z/cs/Microsoft.Build.NuGetSdkResolver.resources.dll - sdk/x.y.z/cs/Microsoft.Build.resources.dll - sdk/x.y.z/cs/Microsoft.Build.Tasks.Core.resources.dll - sdk/x.y.z/cs/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ sdk/x.y.z/cs/Microsoft.VisualStudio.TestPlatform.Client.resources.dll - sdk/x.y.z/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/cs/MSBuild.resources.dll --sdk/x.y.z/cs/NuGet.Build.Tasks.Console.resources.dll --sdk/x.y.z/cs/NuGet.Build.Tasks.resources.dll --sdk/x.y.z/cs/NuGet.CommandLine.XPlat.resources.dll -+sdk/x.y.z/cs/NuGet.Build.Tasks.Pack.resources.dll - sdk/x.y.z/cs/NuGet.Commands.resources.dll - sdk/x.y.z/cs/NuGet.Common.resources.dll - sdk/x.y.z/cs/NuGet.Configuration.resources.dll -@@ ------------ @@ sdk/x.y.z/datacollector.dll - sdk/x.y.z/datacollector.dll.config - sdk/x.y.z/datacollector.runtimeconfig.json - sdk/x.y.z/de/dotnet.resources.dll --sdk/x.y.z/de/Microsoft.Build.NuGetSdkResolver.resources.dll - sdk/x.y.z/de/Microsoft.Build.resources.dll - sdk/x.y.z/de/Microsoft.Build.Tasks.Core.resources.dll - sdk/x.y.z/de/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ sdk/x.y.z/de/Microsoft.VisualStudio.TestPlatform.Client.resources.dll - sdk/x.y.z/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/de/MSBuild.resources.dll --sdk/x.y.z/de/NuGet.Build.Tasks.Console.resources.dll --sdk/x.y.z/de/NuGet.Build.Tasks.resources.dll --sdk/x.y.z/de/NuGet.CommandLine.XPlat.resources.dll -+sdk/x.y.z/de/NuGet.Build.Tasks.Pack.resources.dll - sdk/x.y.z/de/NuGet.Commands.resources.dll - sdk/x.y.z/de/NuGet.Common.resources.dll - sdk/x.y.z/de/NuGet.Configuration.resources.dll -@@ ------------ @@ sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/zh-Hant/Microsoft.Code - sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll - sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/zh-Hant/System.CommandLine.resources.dll - sdk/x.y.z/es/dotnet.resources.dll --sdk/x.y.z/es/Microsoft.Build.NuGetSdkResolver.resources.dll - sdk/x.y.z/es/Microsoft.Build.resources.dll - sdk/x.y.z/es/Microsoft.Build.Tasks.Core.resources.dll - sdk/x.y.z/es/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ sdk/x.y.z/es/Microsoft.VisualStudio.TestPlatform.Client.resources.dll - sdk/x.y.z/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/es/MSBuild.resources.dll --sdk/x.y.z/es/NuGet.Build.Tasks.Console.resources.dll --sdk/x.y.z/es/NuGet.Build.Tasks.resources.dll --sdk/x.y.z/es/NuGet.CommandLine.XPlat.resources.dll -+sdk/x.y.z/es/NuGet.Build.Tasks.Pack.resources.dll - sdk/x.y.z/es/NuGet.Commands.resources.dll - sdk/x.y.z/es/NuGet.Common.resources.dll - sdk/x.y.z/es/NuGet.Configuration.resources.dll -@@ ------------ @@ sdk/x.y.z/Extensions/zh-Hant/Microsoft.TestPlatform.TestHostRuntimeProvider.reso - sdk/x.y.z/Extensions/zh-Hant/Microsoft.VisualStudio.TestPlatform.Extensions.Html.TestLogger.resources.dll - sdk/x.y.z/Extensions/zh-Hant/Microsoft.VisualStudio.TestPlatform.Extensions.Trx.TestLogger.resources.dll - sdk/x.y.z/fr/dotnet.resources.dll --sdk/x.y.z/fr/Microsoft.Build.NuGetSdkResolver.resources.dll - sdk/x.y.z/fr/Microsoft.Build.resources.dll - sdk/x.y.z/fr/Microsoft.Build.Tasks.Core.resources.dll - sdk/x.y.z/fr/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ sdk/x.y.z/fr/Microsoft.VisualStudio.TestPlatform.Client.resources.dll - sdk/x.y.z/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/fr/MSBuild.resources.dll --sdk/x.y.z/fr/NuGet.Build.Tasks.Console.resources.dll --sdk/x.y.z/fr/NuGet.Build.Tasks.resources.dll --sdk/x.y.z/fr/NuGet.CommandLine.XPlat.resources.dll -+sdk/x.y.z/fr/NuGet.Build.Tasks.Pack.resources.dll - sdk/x.y.z/fr/NuGet.Commands.resources.dll - sdk/x.y.z/fr/NuGet.Common.resources.dll - sdk/x.y.z/fr/NuGet.Configuration.resources.dll -@@ ------------ @@ sdk/x.y.z/FSharp/zh-Hant/FSharp.Compiler.Service.resources.dll - sdk/x.y.z/FSharp/zh-Hant/FSharp.Core.resources.dll - sdk/x.y.z/FSharp/zh-Hant/FSharp.DependencyManager.Nuget.resources.dll - sdk/x.y.z/it/dotnet.resources.dll --sdk/x.y.z/it/Microsoft.Build.NuGetSdkResolver.resources.dll - sdk/x.y.z/it/Microsoft.Build.resources.dll - sdk/x.y.z/it/Microsoft.Build.Tasks.Core.resources.dll - sdk/x.y.z/it/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ sdk/x.y.z/it/Microsoft.VisualStudio.TestPlatform.Client.resources.dll - sdk/x.y.z/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/it/MSBuild.resources.dll --sdk/x.y.z/it/NuGet.Build.Tasks.Console.resources.dll --sdk/x.y.z/it/NuGet.Build.Tasks.resources.dll --sdk/x.y.z/it/NuGet.CommandLine.XPlat.resources.dll -+sdk/x.y.z/it/NuGet.Build.Tasks.Pack.resources.dll - sdk/x.y.z/it/NuGet.Commands.resources.dll - sdk/x.y.z/it/NuGet.Common.resources.dll - sdk/x.y.z/it/NuGet.Configuration.resources.dll -@@ ------------ @@ sdk/x.y.z/it/System.CommandLine.resources.dll - sdk/x.y.z/it/Test.Utility.resources.dll - sdk/x.y.z/it/vstest.console.resources.dll - sdk/x.y.z/ja/dotnet.resources.dll --sdk/x.y.z/ja/Microsoft.Build.NuGetSdkResolver.resources.dll - sdk/x.y.z/ja/Microsoft.Build.resources.dll - sdk/x.y.z/ja/Microsoft.Build.Tasks.Core.resources.dll - sdk/x.y.z/ja/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ sdk/x.y.z/ja/Microsoft.VisualStudio.TestPlatform.Client.resources.dll - sdk/x.y.z/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/ja/MSBuild.resources.dll --sdk/x.y.z/ja/NuGet.Build.Tasks.Console.resources.dll --sdk/x.y.z/ja/NuGet.Build.Tasks.resources.dll --sdk/x.y.z/ja/NuGet.CommandLine.XPlat.resources.dll -+sdk/x.y.z/ja/NuGet.Build.Tasks.Pack.resources.dll - sdk/x.y.z/ja/NuGet.Commands.resources.dll - sdk/x.y.z/ja/NuGet.Common.resources.dll - sdk/x.y.z/ja/NuGet.Configuration.resources.dll -@@ ------------ @@ sdk/x.y.z/ja/Test.Utility.resources.dll - sdk/x.y.z/ja/vstest.console.resources.dll - sdk/x.y.z/KnownWorkloadManifests.txt - sdk/x.y.z/ko/dotnet.resources.dll --sdk/x.y.z/ko/Microsoft.Build.NuGetSdkResolver.resources.dll - sdk/x.y.z/ko/Microsoft.Build.resources.dll - sdk/x.y.z/ko/Microsoft.Build.Tasks.Core.resources.dll - sdk/x.y.z/ko/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ sdk/x.y.z/ko/Microsoft.VisualStudio.TestPlatform.Client.resources.dll - sdk/x.y.z/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/ko/MSBuild.resources.dll --sdk/x.y.z/ko/NuGet.Build.Tasks.Console.resources.dll --sdk/x.y.z/ko/NuGet.Build.Tasks.resources.dll --sdk/x.y.z/ko/NuGet.CommandLine.XPlat.resources.dll -+sdk/x.y.z/ko/NuGet.Build.Tasks.Pack.resources.dll - sdk/x.y.z/ko/NuGet.Commands.resources.dll - sdk/x.y.z/ko/NuGet.Common.resources.dll - sdk/x.y.z/ko/NuGet.Configuration.resources.dll -@@ ------------ @@ sdk/x.y.z/NuGet.RestoreEx.targets - sdk/x.y.z/NuGet.targets - sdk/x.y.z/NuGet.Versioning.dll - sdk/x.y.z/pl/dotnet.resources.dll --sdk/x.y.z/pl/Microsoft.Build.NuGetSdkResolver.resources.dll - sdk/x.y.z/pl/Microsoft.Build.resources.dll - sdk/x.y.z/pl/Microsoft.Build.Tasks.Core.resources.dll - sdk/x.y.z/pl/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ sdk/x.y.z/pl/Microsoft.VisualStudio.TestPlatform.Client.resources.dll - sdk/x.y.z/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/pl/MSBuild.resources.dll --sdk/x.y.z/pl/NuGet.Build.Tasks.Console.resources.dll --sdk/x.y.z/pl/NuGet.Build.Tasks.resources.dll --sdk/x.y.z/pl/NuGet.CommandLine.XPlat.resources.dll -+sdk/x.y.z/pl/NuGet.Build.Tasks.Pack.resources.dll - sdk/x.y.z/pl/NuGet.Commands.resources.dll - sdk/x.y.z/pl/NuGet.Common.resources.dll - sdk/x.y.z/pl/NuGet.Configuration.resources.dll -@@ ------------ @@ sdk/x.y.z/pl/Test.Utility.resources.dll - sdk/x.y.z/pl/vstest.console.resources.dll - sdk/x.y.z/PortableRuntimeIdentifierGraph.json - sdk/x.y.z/pt-BR/dotnet.resources.dll --sdk/x.y.z/pt-BR/Microsoft.Build.NuGetSdkResolver.resources.dll - sdk/x.y.z/pt-BR/Microsoft.Build.resources.dll - sdk/x.y.z/pt-BR/Microsoft.Build.Tasks.Core.resources.dll - sdk/x.y.z/pt-BR/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ sdk/x.y.z/pt-BR/Microsoft.VisualStudio.TestPlatform.Client.resources.dll - sdk/x.y.z/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/pt-BR/MSBuild.resources.dll --sdk/x.y.z/pt-BR/NuGet.Build.Tasks.Console.resources.dll --sdk/x.y.z/pt-BR/NuGet.Build.Tasks.resources.dll --sdk/x.y.z/pt-BR/NuGet.CommandLine.XPlat.resources.dll -+sdk/x.y.z/pt-BR/NuGet.Build.Tasks.Pack.resources.dll - sdk/x.y.z/pt-BR/NuGet.Commands.resources.dll - sdk/x.y.z/pt-BR/NuGet.Common.resources.dll - sdk/x.y.z/pt-BR/NuGet.Configuration.resources.dll -@@ ------------ @@ sdk/x.y.z/Roslyn/tr/Microsoft.Build.Tasks.CodeAnalysis.resources.dll - sdk/x.y.z/Roslyn/zh-Hans/Microsoft.Build.Tasks.CodeAnalysis.resources.dll - sdk/x.y.z/Roslyn/zh-Hant/Microsoft.Build.Tasks.CodeAnalysis.resources.dll - sdk/x.y.z/ru/dotnet.resources.dll --sdk/x.y.z/ru/Microsoft.Build.NuGetSdkResolver.resources.dll - sdk/x.y.z/ru/Microsoft.Build.resources.dll - sdk/x.y.z/ru/Microsoft.Build.Tasks.Core.resources.dll - sdk/x.y.z/ru/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ sdk/x.y.z/ru/Microsoft.VisualStudio.TestPlatform.Client.resources.dll - sdk/x.y.z/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/ru/MSBuild.resources.dll --sdk/x.y.z/ru/NuGet.Build.Tasks.Console.resources.dll --sdk/x.y.z/ru/NuGet.Build.Tasks.resources.dll --sdk/x.y.z/ru/NuGet.CommandLine.XPlat.resources.dll -+sdk/x.y.z/ru/NuGet.Build.Tasks.Pack.resources.dll - sdk/x.y.z/ru/NuGet.Commands.resources.dll - sdk/x.y.z/ru/NuGet.Common.resources.dll - sdk/x.y.z/ru/NuGet.Configuration.resources.dll -@@ ------------ @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.Stati - sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.References.targets - sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ScopedCss.5_0.targets - sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ScopedCss.targets --sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ServiceWorkerAssetsManifest.targets -+sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ServiceWorker.targets - sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.SingleTargeting.targets - sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.targets - sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Sdk.StaticWebAssets.CurrentVersion.props -@@ ------------ @@ sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Web/tools/net472/Microsoft.NET.Sdk.Web.Tasks.dl - sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Web/tools/netx.y/Microsoft.NET.Sdk.Web.Tasks.dll - sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/Sdk/Sdk.props - sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/Sdk/Sdk.targets -+sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/targets/Microsoft.NET.Sdk.WebAssembly.6_0.temp.targets -+sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/targets/Microsoft.NET.Sdk.WebAssembly.9_0.temp.targets - sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/tools/net472/Microsoft.NET.Sdk.WebAssembly.Tasks.dll - sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/tools/netx.y/Microsoft.NET.Sdk.WebAssembly.Tasks.dll - sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/LICENSE.TXT -@@ ------------ @@ sdk/x.y.z/TestHostNetFramework/zh-Hant/Microsoft.TestPlatform.Utilities.resource - sdk/x.y.z/TestHostNetFramework/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/TestHostNetFramework/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/tr/dotnet.resources.dll --sdk/x.y.z/tr/Microsoft.Build.NuGetSdkResolver.resources.dll - sdk/x.y.z/tr/Microsoft.Build.resources.dll - sdk/x.y.z/tr/Microsoft.Build.Tasks.Core.resources.dll - sdk/x.y.z/tr/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ sdk/x.y.z/tr/Microsoft.VisualStudio.TestPlatform.Client.resources.dll - sdk/x.y.z/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/tr/MSBuild.resources.dll --sdk/x.y.z/tr/NuGet.Build.Tasks.Console.resources.dll --sdk/x.y.z/tr/NuGet.Build.Tasks.resources.dll --sdk/x.y.z/tr/NuGet.CommandLine.XPlat.resources.dll -+sdk/x.y.z/tr/NuGet.Build.Tasks.Pack.resources.dll - sdk/x.y.z/tr/NuGet.Commands.resources.dll - sdk/x.y.z/tr/NuGet.Common.resources.dll - sdk/x.y.z/tr/NuGet.Configuration.resources.dll -@@ ------------ @@ sdk/x.y.z/vstest.console.dll - sdk/x.y.z/vstest.console.dll.config - sdk/x.y.z/vstest.console.runtimeconfig.json - sdk/x.y.z/zh-Hans/dotnet.resources.dll --sdk/x.y.z/zh-Hans/Microsoft.Build.NuGetSdkResolver.resources.dll - sdk/x.y.z/zh-Hans/Microsoft.Build.resources.dll - sdk/x.y.z/zh-Hans/Microsoft.Build.Tasks.Core.resources.dll - sdk/x.y.z/zh-Hans/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ sdk/x.y.z/zh-Hans/Microsoft.VisualStudio.TestPlatform.Client.resources.dll - sdk/x.y.z/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/zh-Hans/MSBuild.resources.dll --sdk/x.y.z/zh-Hans/NuGet.Build.Tasks.Console.resources.dll --sdk/x.y.z/zh-Hans/NuGet.Build.Tasks.resources.dll --sdk/x.y.z/zh-Hans/NuGet.CommandLine.XPlat.resources.dll -+sdk/x.y.z/zh-Hans/NuGet.Build.Tasks.Pack.resources.dll - sdk/x.y.z/zh-Hans/NuGet.Commands.resources.dll - sdk/x.y.z/zh-Hans/NuGet.Common.resources.dll - sdk/x.y.z/zh-Hans/NuGet.Configuration.resources.dll -@@ ------------ @@ sdk/x.y.z/zh-Hans/System.CommandLine.resources.dll - sdk/x.y.z/zh-Hans/Test.Utility.resources.dll - sdk/x.y.z/zh-Hans/vstest.console.resources.dll - sdk/x.y.z/zh-Hant/dotnet.resources.dll --sdk/x.y.z/zh-Hant/Microsoft.Build.NuGetSdkResolver.resources.dll - sdk/x.y.z/zh-Hant/Microsoft.Build.resources.dll - sdk/x.y.z/zh-Hant/Microsoft.Build.Tasks.Core.resources.dll - sdk/x.y.z/zh-Hant/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ sdk/x.y.z/zh-Hant/Microsoft.VisualStudio.TestPlatform.Client.resources.dll - sdk/x.y.z/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - sdk/x.y.z/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - sdk/x.y.z/zh-Hant/MSBuild.resources.dll --sdk/x.y.z/zh-Hant/NuGet.Build.Tasks.Console.resources.dll --sdk/x.y.z/zh-Hant/NuGet.Build.Tasks.resources.dll --sdk/x.y.z/zh-Hant/NuGet.CommandLine.XPlat.resources.dll -+sdk/x.y.z/zh-Hant/NuGet.Build.Tasks.Pack.resources.dll - sdk/x.y.z/zh-Hant/NuGet.Commands.resources.dll - sdk/x.y.z/zh-Hant/NuGet.Common.resources.dll - sdk/x.y.z/zh-Hant/NuGet.Configuration.resources.dll +@@ ------------ @@ sdk/x.y.z/Microsoft.NET.Sdk.WorkloadManifestReader.dll + sdk/x.y.z/Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver.dll + sdk/x.y.z/Microsoft.NET.StringTools.dll + sdk/x.y.z/Microsoft.NETCoreSdk.BundledCliTools.props +-sdk/x.y.z/Microsoft.NETCoreSdk.BundledMSBuildInformation.props + sdk/x.y.z/Microsoft.NETCoreSdk.BundledVersions.props + sdk/x.y.z/Microsoft.NETFramework.CurrentVersion.props + sdk/x.y.z/Microsoft.NETFramework.CurrentVersion.targets From 6101c31ba82f258c6686ec1e3eb7fe8c088dae72 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Tue, 26 Mar 2024 16:11:44 -0700 Subject: [PATCH 21/41] Fix imports issue with test project --- src/SourceBuild/content/test/Directory.Build.props | 5 +++++ .../Microsoft.DotNet.UnifiedBuild.Tests/Config.cs | 8 ++++---- .../Microsoft.DotNet.UnifiedBuild.Tests.csproj | 5 ++--- .../Microsoft.DotNet.UnifiedBuild.Tests/SdkKind.cs | 14 ++++++++++++++ 4 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkKind.cs diff --git a/src/SourceBuild/content/test/Directory.Build.props b/src/SourceBuild/content/test/Directory.Build.props index 8c119d5413b5..fca27833af42 100644 --- a/src/SourceBuild/content/test/Directory.Build.props +++ b/src/SourceBuild/content/test/Directory.Build.props @@ -1,2 +1,7 @@ + + + + + diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs index 76b81ec38dca..261863f18f62 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs @@ -18,10 +18,10 @@ public class Config : IDisposable public Config(IMessageSink sink) { _sink = sink; - UbBuildVersion = (string)AppContext.GetData(BuildVersionSwitch); - TargetRid = (string)AppContext.GetData(TargetRidSwitch); - PortableRid = (string)AppContext.GetData(PortableRidSwitch); - UbSdkArchivePath = (string)AppContext.GetData(UbSdkArchivePathSwitch); + UbBuildVersion = (string)(AppContext.GetData(BuildVersionSwitch) ?? throw new InvalidOperationException("Unified Build version must be specified")); + TargetRid = (string)(AppContext.GetData(TargetRidSwitch) ?? throw new InvalidOperationException("Target RID must be specified")); + PortableRid = (string)(AppContext.GetData(PortableRidSwitch) ?? throw new InvalidOperationException("Portable RID must be specified")); + UbSdkArchivePath = (string)(AppContext.GetData(UbSdkArchivePathSwitch) ?? throw new InvalidOperationException("Unified Build SDK archive path must be specified")); TargetArchitecture = TargetRid.Split('-')[1]; MsftSdkArchivePath = AppContext.GetData(MsftSdkArchivePathSwitch) as string ?? DownloadMsftSdkArchive().Result; } diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index 6e47edcf5585..ca51f37387c7 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -1,7 +1,7 @@  + - - + $(NetCurrent) enable @@ -36,5 +36,4 @@ - diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkKind.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkKind.cs new file mode 100644 index 000000000000..f37b17e45d7a --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkKind.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Microsoft.DotNet.UnifiedBuild.Tests +{ + internal enum SdkKind + { + Microsoft, + UnifiedBuild + } +} From d963e00ceee1d6deeeaee2d9373dd5287cf41c9f Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Tue, 26 Mar 2024 16:14:43 -0700 Subject: [PATCH 22/41] Uncommit unnecessary file and remove buildprops template fluff --- src/SourceBuild/content/test/Directory.Build.props | 5 ----- .../Microsoft.DotNet.UnifiedBuild.Tests/SdkKind.cs | 14 -------------- 2 files changed, 19 deletions(-) delete mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkKind.cs diff --git a/src/SourceBuild/content/test/Directory.Build.props b/src/SourceBuild/content/test/Directory.Build.props index fca27833af42..8c119d5413b5 100644 --- a/src/SourceBuild/content/test/Directory.Build.props +++ b/src/SourceBuild/content/test/Directory.Build.props @@ -1,7 +1,2 @@ - - - - - diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkKind.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkKind.cs deleted file mode 100644 index f37b17e45d7a..000000000000 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/SdkKind.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Microsoft.DotNet.UnifiedBuild.Tests -{ - internal enum SdkKind - { - Microsoft, - UnifiedBuild - } -} From ee8d200035369a863a2b5e918bdceaa35ab02344 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Wed, 27 Mar 2024 11:22:02 -0700 Subject: [PATCH 23/41] PR Feedback: - Use correct format for Versions.props package name - Pass ExcludeFromDotNetBuild=false to build UBValidation Tests - Remove DirectoryBuildProps - Remove gitignore --- src/SourceBuild/content/eng/Versions.props | 3 +- .../content/eng/tools/init-build.proj | 5 +- .../eng/unifiedBuildValidation.targets | 3 +- .../content/test/Directory.Build.props | 2 - .../.gitignore | 484 ------------------ ...Microsoft.DotNet.UnifiedBuild.Tests.csproj | 6 +- 6 files changed, 9 insertions(+), 494 deletions(-) delete mode 100644 src/SourceBuild/content/test/Directory.Build.props delete mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/.gitignore diff --git a/src/SourceBuild/content/eng/Versions.props b/src/SourceBuild/content/eng/Versions.props index 56b275402442..20f5ad816132 100644 --- a/src/SourceBuild/content/eng/Versions.props +++ b/src/SourceBuild/content/eng/Versions.props @@ -3,6 +3,7 @@ 0.1.0 alpha.1 + true 2.0.0-beta4.24126.1 - 7.0.0 + 7.0.0 diff --git a/src/SourceBuild/content/eng/tools/init-build.proj b/src/SourceBuild/content/eng/tools/init-build.proj index c6e7a6e5cd2f..13e30ae89322 100644 --- a/src/SourceBuild/content/eng/tools/init-build.proj +++ b/src/SourceBuild/content/eng/tools/init-build.proj @@ -122,9 +122,10 @@ Condition="'$(ShortStack)' != 'true' and '$(PortableBuild)' == 'true' and '$(PgoInstrument)' != 'true'" > + Properties="MSBuildRestoreSessionId=$([System.Guid]::NewGuid());ExcludeFromDotNetBuild=false" /> + Targets="Build" + Properties="ExcludeFromDotNetBuild=false" /> + Properties="ExcludeFromDotNetBuild=false;VsTestUseMSBuildOutput=true" /> diff --git a/src/SourceBuild/content/test/Directory.Build.props b/src/SourceBuild/content/test/Directory.Build.props deleted file mode 100644 index 8c119d5413b5..000000000000 --- a/src/SourceBuild/content/test/Directory.Build.props +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/.gitignore b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/.gitignore deleted file mode 100644 index dd315077a612..000000000000 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/.gitignore +++ /dev/null @@ -1,484 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from `dotnet new gitignore` - -# dotenv files -.env - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET -project.lock.json -project.fragment.lock.json -artifacts/ - -# Tye -.tye/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.tlog -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*.json -coverage*.xml -coverage*.info - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio 6 auto-generated project file (contains which files were open etc.) -*.vbp - -# Visual Studio 6 workspace and project file (working project files containing files to include in project) -*.dsw -*.dsp - -# Visual Studio 6 technical files -*.ncb -*.aps - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# Visual Studio History (VSHistory) files -.vshistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd - -# VS Code files for those working on multiple tools -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -*.code-workspace - -# Local History for Visual Studio Code -.history/ - -# Windows Installer files from build outputs -*.cab -*.msi -*.msix -*.msm -*.msp - -# JetBrains Rider -*.sln.iml -.idea/ - -## -## Visual studio for Mac -## - - -# globs -Makefile.in -*.userprefs -*.usertasks -config.make -config.status -aclocal.m4 -install-sh -autom4te.cache/ -*.tar.gz -tarballs/ -test-results/ - -# Mac bundle stuff -*.dmg -*.app - -# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore -# Windows thumbnail cache files -Thumbs.db -ehthumbs.db -ehthumbs_vista.db - -# Dump file -*.stackdump - -# Folder config file -[Dd]esktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msix -*.msm -*.msp - -# Windows shortcuts -*.lnk - -# Vim temporary swap files -*.swp diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index ca51f37387c7..de62ae195420 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -1,6 +1,6 @@  - + $(NetCurrent) @@ -9,7 +9,7 @@ - + @@ -19,7 +19,7 @@ + BeforeTargets="_GenerateRuntimeConfigurationFilesInputCache"> $(SdkTarballPath) From 51572ba188292e065e3d870b6551486b46487fb2 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Wed, 27 Mar 2024 16:05:56 -0700 Subject: [PATCH 24/41] Hardcode path to test project in restore --- src/SourceBuild/content/eng/tools/init-build.proj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SourceBuild/content/eng/tools/init-build.proj b/src/SourceBuild/content/eng/tools/init-build.proj index fc82ffa5dad4..c3f16180dbaa 100644 --- a/src/SourceBuild/content/eng/tools/init-build.proj +++ b/src/SourceBuild/content/eng/tools/init-build.proj @@ -115,10 +115,10 @@ - - From 9cae2dc6ecd7087ab032d4b014411aa45d05b278 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Wed, 27 Mar 2024 21:17:44 -0700 Subject: [PATCH 25/41] Update linux baseline --- .../baselines/MsftToUbSdkFiles-linux-x64.diff | 280 +----------------- 1 file changed, 7 insertions(+), 273 deletions(-) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-linux-x64.diff b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-linux-x64.diff index a4ee90f6a0e8..fff0fe82ba17 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-linux-x64.diff +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/assets/baselines/MsftToUbSdkFiles-linux-x64.diff @@ -2,52 +2,6 @@ diff --git a/msftSdkFiles.txt b/ubSdkFiles.txt index ------------ --- a/msftSdkFiles.txt +++ b/ubSdkFiles.txt -@@ ------------ @@ - ./sdk/x.y.z/Containers/tasks/netx.y/zh-Hant/System.CommandLine.resources.dll - ./sdk/x.y.z/cs/ - ./sdk/x.y.z/cs/dotnet.resources.dll --./sdk/x.y.z/cs/Microsoft.Build.NuGetSdkResolver.resources.dll - ./sdk/x.y.z/cs/Microsoft.Build.resources.dll - ./sdk/x.y.z/cs/Microsoft.Build.Tasks.Core.resources.dll - ./sdk/x.y.z/cs/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - ./sdk/x.y.z/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/cs/MSBuild.resources.dll --./sdk/x.y.z/cs/NuGet.Build.Tasks.Console.resources.dll --./sdk/x.y.z/cs/NuGet.Build.Tasks.resources.dll --./sdk/x.y.z/cs/NuGet.CommandLine.XPlat.resources.dll -+./sdk/x.y.z/cs/NuGet.Build.Tasks.Pack.resources.dll - ./sdk/x.y.z/cs/NuGet.Commands.resources.dll - ./sdk/x.y.z/cs/NuGet.Common.resources.dll - ./sdk/x.y.z/cs/NuGet.Configuration.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/datacollector.runtimeconfig.json - ./sdk/x.y.z/de/ - ./sdk/x.y.z/de/dotnet.resources.dll --./sdk/x.y.z/de/Microsoft.Build.NuGetSdkResolver.resources.dll - ./sdk/x.y.z/de/Microsoft.Build.resources.dll - ./sdk/x.y.z/de/Microsoft.Build.Tasks.Core.resources.dll - ./sdk/x.y.z/de/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - ./sdk/x.y.z/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/de/MSBuild.resources.dll --./sdk/x.y.z/de/NuGet.Build.Tasks.Console.resources.dll --./sdk/x.y.z/de/NuGet.Build.Tasks.resources.dll --./sdk/x.y.z/de/NuGet.CommandLine.XPlat.resources.dll -+./sdk/x.y.z/de/NuGet.Build.Tasks.Pack.resources.dll - ./sdk/x.y.z/de/NuGet.Commands.resources.dll - ./sdk/x.y.z/de/NuGet.Common.resources.dll - ./sdk/x.y.z/de/NuGet.Configuration.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/ - ./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/ - ./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/ --./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/ - ./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.dll - ./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/System.Diagnostics.EventLog.Messages.dll - ./sdk/x.y.z/DotnetTools/dotnet-format/runtimes/win/lib/netx.y/System.Security.Cryptography.Pkcs.dll @@ ------------ @@ ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/ ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/ @@ -57,230 +11,10 @@ index ------------ ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/runtimes/win/lib/netx.y/System.Windows.Extensions.dll ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/System.CodeDom.dll @@ ------------ @@ - ./sdk/x.y.z/DotnetTools/dotnet-watch/x.y.z/tools/netx.y/any/zh-Hant/System.CommandLine.resources.dll - ./sdk/x.y.z/es/ - ./sdk/x.y.z/es/dotnet.resources.dll --./sdk/x.y.z/es/Microsoft.Build.NuGetSdkResolver.resources.dll - ./sdk/x.y.z/es/Microsoft.Build.resources.dll - ./sdk/x.y.z/es/Microsoft.Build.Tasks.Core.resources.dll - ./sdk/x.y.z/es/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - ./sdk/x.y.z/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/es/MSBuild.resources.dll --./sdk/x.y.z/es/NuGet.Build.Tasks.Console.resources.dll --./sdk/x.y.z/es/NuGet.Build.Tasks.resources.dll --./sdk/x.y.z/es/NuGet.CommandLine.XPlat.resources.dll -+./sdk/x.y.z/es/NuGet.Build.Tasks.Pack.resources.dll - ./sdk/x.y.z/es/NuGet.Commands.resources.dll - ./sdk/x.y.z/es/NuGet.Common.resources.dll - ./sdk/x.y.z/es/NuGet.Configuration.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/Extensions/zh-Hant/Microsoft.VisualStudio.TestPlatform.Extensions.Trx.TestLogger.resources.dll - ./sdk/x.y.z/fr/ - ./sdk/x.y.z/fr/dotnet.resources.dll --./sdk/x.y.z/fr/Microsoft.Build.NuGetSdkResolver.resources.dll - ./sdk/x.y.z/fr/Microsoft.Build.resources.dll - ./sdk/x.y.z/fr/Microsoft.Build.Tasks.Core.resources.dll - ./sdk/x.y.z/fr/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - ./sdk/x.y.z/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/fr/MSBuild.resources.dll --./sdk/x.y.z/fr/NuGet.Build.Tasks.Console.resources.dll --./sdk/x.y.z/fr/NuGet.Build.Tasks.resources.dll --./sdk/x.y.z/fr/NuGet.CommandLine.XPlat.resources.dll -+./sdk/x.y.z/fr/NuGet.Build.Tasks.Pack.resources.dll - ./sdk/x.y.z/fr/NuGet.Commands.resources.dll - ./sdk/x.y.z/fr/NuGet.Common.resources.dll - ./sdk/x.y.z/fr/NuGet.Configuration.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/FSharp/zh-Hant/FSharp.DependencyManager.Nuget.resources.dll - ./sdk/x.y.z/it/ - ./sdk/x.y.z/it/dotnet.resources.dll --./sdk/x.y.z/it/Microsoft.Build.NuGetSdkResolver.resources.dll - ./sdk/x.y.z/it/Microsoft.Build.resources.dll - ./sdk/x.y.z/it/Microsoft.Build.Tasks.Core.resources.dll - ./sdk/x.y.z/it/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - ./sdk/x.y.z/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/it/MSBuild.resources.dll --./sdk/x.y.z/it/NuGet.Build.Tasks.Console.resources.dll --./sdk/x.y.z/it/NuGet.Build.Tasks.resources.dll --./sdk/x.y.z/it/NuGet.CommandLine.XPlat.resources.dll -+./sdk/x.y.z/it/NuGet.Build.Tasks.Pack.resources.dll - ./sdk/x.y.z/it/NuGet.Commands.resources.dll - ./sdk/x.y.z/it/NuGet.Common.resources.dll - ./sdk/x.y.z/it/NuGet.Configuration.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/it/vstest.console.resources.dll - ./sdk/x.y.z/ja/ - ./sdk/x.y.z/ja/dotnet.resources.dll --./sdk/x.y.z/ja/Microsoft.Build.NuGetSdkResolver.resources.dll - ./sdk/x.y.z/ja/Microsoft.Build.resources.dll - ./sdk/x.y.z/ja/Microsoft.Build.Tasks.Core.resources.dll - ./sdk/x.y.z/ja/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - ./sdk/x.y.z/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/ja/MSBuild.resources.dll --./sdk/x.y.z/ja/NuGet.Build.Tasks.Console.resources.dll --./sdk/x.y.z/ja/NuGet.Build.Tasks.resources.dll --./sdk/x.y.z/ja/NuGet.CommandLine.XPlat.resources.dll -+./sdk/x.y.z/ja/NuGet.Build.Tasks.Pack.resources.dll - ./sdk/x.y.z/ja/NuGet.Commands.resources.dll - ./sdk/x.y.z/ja/NuGet.Common.resources.dll - ./sdk/x.y.z/ja/NuGet.Configuration.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/KnownWorkloadManifests.txt - ./sdk/x.y.z/ko/ - ./sdk/x.y.z/ko/dotnet.resources.dll --./sdk/x.y.z/ko/Microsoft.Build.NuGetSdkResolver.resources.dll - ./sdk/x.y.z/ko/Microsoft.Build.resources.dll - ./sdk/x.y.z/ko/Microsoft.Build.Tasks.Core.resources.dll - ./sdk/x.y.z/ko/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - ./sdk/x.y.z/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/ko/MSBuild.resources.dll --./sdk/x.y.z/ko/NuGet.Build.Tasks.Console.resources.dll --./sdk/x.y.z/ko/NuGet.Build.Tasks.resources.dll --./sdk/x.y.z/ko/NuGet.CommandLine.XPlat.resources.dll -+./sdk/x.y.z/ko/NuGet.Build.Tasks.Pack.resources.dll - ./sdk/x.y.z/ko/NuGet.Commands.resources.dll - ./sdk/x.y.z/ko/NuGet.Common.resources.dll - ./sdk/x.y.z/ko/NuGet.Configuration.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/NuGet.Versioning.dll - ./sdk/x.y.z/pl/ - ./sdk/x.y.z/pl/dotnet.resources.dll --./sdk/x.y.z/pl/Microsoft.Build.NuGetSdkResolver.resources.dll - ./sdk/x.y.z/pl/Microsoft.Build.resources.dll - ./sdk/x.y.z/pl/Microsoft.Build.Tasks.Core.resources.dll - ./sdk/x.y.z/pl/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - ./sdk/x.y.z/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/pl/MSBuild.resources.dll --./sdk/x.y.z/pl/NuGet.Build.Tasks.Console.resources.dll --./sdk/x.y.z/pl/NuGet.Build.Tasks.resources.dll --./sdk/x.y.z/pl/NuGet.CommandLine.XPlat.resources.dll -+./sdk/x.y.z/pl/NuGet.Build.Tasks.Pack.resources.dll - ./sdk/x.y.z/pl/NuGet.Commands.resources.dll - ./sdk/x.y.z/pl/NuGet.Common.resources.dll - ./sdk/x.y.z/pl/NuGet.Configuration.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/PortableRuntimeIdentifierGraph.json - ./sdk/x.y.z/pt-BR/ - ./sdk/x.y.z/pt-BR/dotnet.resources.dll --./sdk/x.y.z/pt-BR/Microsoft.Build.NuGetSdkResolver.resources.dll - ./sdk/x.y.z/pt-BR/Microsoft.Build.resources.dll - ./sdk/x.y.z/pt-BR/Microsoft.Build.Tasks.Core.resources.dll - ./sdk/x.y.z/pt-BR/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - ./sdk/x.y.z/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/pt-BR/MSBuild.resources.dll --./sdk/x.y.z/pt-BR/NuGet.Build.Tasks.Console.resources.dll --./sdk/x.y.z/pt-BR/NuGet.Build.Tasks.resources.dll --./sdk/x.y.z/pt-BR/NuGet.CommandLine.XPlat.resources.dll -+./sdk/x.y.z/pt-BR/NuGet.Build.Tasks.Pack.resources.dll - ./sdk/x.y.z/pt-BR/NuGet.Commands.resources.dll - ./sdk/x.y.z/pt-BR/NuGet.Common.resources.dll - ./sdk/x.y.z/pt-BR/NuGet.Configuration.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/Roslyn/zh-Hant/Microsoft.Build.Tasks.CodeAnalysis.resources.dll - ./sdk/x.y.z/ru/ - ./sdk/x.y.z/ru/dotnet.resources.dll --./sdk/x.y.z/ru/Microsoft.Build.NuGetSdkResolver.resources.dll - ./sdk/x.y.z/ru/Microsoft.Build.resources.dll - ./sdk/x.y.z/ru/Microsoft.Build.Tasks.Core.resources.dll - ./sdk/x.y.z/ru/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - ./sdk/x.y.z/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/ru/MSBuild.resources.dll --./sdk/x.y.z/ru/NuGet.Build.Tasks.Console.resources.dll --./sdk/x.y.z/ru/NuGet.Build.Tasks.resources.dll --./sdk/x.y.z/ru/NuGet.CommandLine.XPlat.resources.dll -+./sdk/x.y.z/ru/NuGet.Build.Tasks.Pack.resources.dll - ./sdk/x.y.z/ru/NuGet.Commands.resources.dll - ./sdk/x.y.z/ru/NuGet.Common.resources.dll - ./sdk/x.y.z/ru/NuGet.Configuration.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.References.targets - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ScopedCss.5_0.targets - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ScopedCss.targets --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ServiceWorkerAssetsManifest.targets -+./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.ServiceWorker.targets - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.SingleTargeting.targets - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Microsoft.NET.Sdk.StaticWebAssets.targets - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.StaticWebAssets/targets/Sdk.StaticWebAssets.CurrentVersion.props -@@ ------------ @@ - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/Sdk/ - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/Sdk/Sdk.props - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/Sdk/Sdk.targets -+./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/targets/ -+./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/targets/Microsoft.NET.Sdk.WebAssembly.6_0.temp.targets -+./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/targets/Microsoft.NET.Sdk.WebAssembly.9_0.temp.targets - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/tools/ - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/tools/net472/ - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WebAssembly/tools/net472/Microsoft.NET.Sdk.WebAssembly.Tasks.dll -@@ ------------ @@ - ./sdk/x.y.z/TestHostNetFramework/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/tr/ - ./sdk/x.y.z/tr/dotnet.resources.dll --./sdk/x.y.z/tr/Microsoft.Build.NuGetSdkResolver.resources.dll - ./sdk/x.y.z/tr/Microsoft.Build.resources.dll - ./sdk/x.y.z/tr/Microsoft.Build.Tasks.Core.resources.dll - ./sdk/x.y.z/tr/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - ./sdk/x.y.z/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/tr/MSBuild.resources.dll --./sdk/x.y.z/tr/NuGet.Build.Tasks.Console.resources.dll --./sdk/x.y.z/tr/NuGet.Build.Tasks.resources.dll --./sdk/x.y.z/tr/NuGet.CommandLine.XPlat.resources.dll -+./sdk/x.y.z/tr/NuGet.Build.Tasks.Pack.resources.dll - ./sdk/x.y.z/tr/NuGet.Commands.resources.dll - ./sdk/x.y.z/tr/NuGet.Common.resources.dll - ./sdk/x.y.z/tr/NuGet.Configuration.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/vstest.console.runtimeconfig.json - ./sdk/x.y.z/zh-Hans/ - ./sdk/x.y.z/zh-Hans/dotnet.resources.dll --./sdk/x.y.z/zh-Hans/Microsoft.Build.NuGetSdkResolver.resources.dll - ./sdk/x.y.z/zh-Hans/Microsoft.Build.resources.dll - ./sdk/x.y.z/zh-Hans/Microsoft.Build.Tasks.Core.resources.dll - ./sdk/x.y.z/zh-Hans/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - ./sdk/x.y.z/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/zh-Hans/MSBuild.resources.dll --./sdk/x.y.z/zh-Hans/NuGet.Build.Tasks.Console.resources.dll --./sdk/x.y.z/zh-Hans/NuGet.Build.Tasks.resources.dll --./sdk/x.y.z/zh-Hans/NuGet.CommandLine.XPlat.resources.dll -+./sdk/x.y.z/zh-Hans/NuGet.Build.Tasks.Pack.resources.dll - ./sdk/x.y.z/zh-Hans/NuGet.Commands.resources.dll - ./sdk/x.y.z/zh-Hans/NuGet.Common.resources.dll - ./sdk/x.y.z/zh-Hans/NuGet.Configuration.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/zh-Hans/vstest.console.resources.dll - ./sdk/x.y.z/zh-Hant/ - ./sdk/x.y.z/zh-Hant/dotnet.resources.dll --./sdk/x.y.z/zh-Hant/Microsoft.Build.NuGetSdkResolver.resources.dll - ./sdk/x.y.z/zh-Hant/Microsoft.Build.resources.dll - ./sdk/x.y.z/zh-Hant/Microsoft.Build.Tasks.Core.resources.dll - ./sdk/x.y.z/zh-Hant/Microsoft.Build.Utilities.Core.resources.dll -@@ ------------ @@ - ./sdk/x.y.z/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll - ./sdk/x.y.z/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll - ./sdk/x.y.z/zh-Hant/MSBuild.resources.dll --./sdk/x.y.z/zh-Hant/NuGet.Build.Tasks.Console.resources.dll --./sdk/x.y.z/zh-Hant/NuGet.Build.Tasks.resources.dll --./sdk/x.y.z/zh-Hant/NuGet.CommandLine.XPlat.resources.dll -+./sdk/x.y.z/zh-Hant/NuGet.Build.Tasks.Pack.resources.dll - ./sdk/x.y.z/zh-Hant/NuGet.Commands.resources.dll - ./sdk/x.y.z/zh-Hant/NuGet.Common.resources.dll - ./sdk/x.y.z/zh-Hant/NuGet.Configuration.resources.dll + ./sdk/x.y.z/Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver.dll + ./sdk/x.y.z/Microsoft.NET.StringTools.dll + ./sdk/x.y.z/Microsoft.NETCoreSdk.BundledCliTools.props +-./sdk/x.y.z/Microsoft.NETCoreSdk.BundledMSBuildInformation.props + ./sdk/x.y.z/Microsoft.NETCoreSdk.BundledVersions.props + ./sdk/x.y.z/Microsoft.NETFramework.CurrentVersion.props + ./sdk/x.y.z/Microsoft.NETFramework.CurrentVersion.targets From 8abbbd32e0914bd95075923f3237a0e7ade78b8a Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Thu, 28 Mar 2024 11:02:07 -0700 Subject: [PATCH 26/41] Don't fail build on failing test --- src/SourceBuild/content/eng/unifiedBuildValidation.targets | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index 0746ea4d51ca..c9cca12dcf4f 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -11,6 +11,7 @@ From 8bc48d75f04a9ec95b8f895c470867f85156191c Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Thu, 28 Mar 2024 14:44:46 -0700 Subject: [PATCH 27/41] Add Readme, just warn on baseline mismatch, log test info --- .../eng/unifiedBuildValidation.targets | 2 +- .../Config.cs | 52 +++++++++++++------ ...Microsoft.DotNet.UnifiedBuild.Tests.csproj | 8 +++ .../Readme.md | 26 ++++++++++ 4 files changed, 71 insertions(+), 17 deletions(-) create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Readme.md diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index c9cca12dcf4f..f44a81aa34dd 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -12,7 +12,7 @@ + Properties="ExcludeFromDotNetBuild=false;VsTestUseMSBuildOutput=false" /> diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs index 261863f18f62..80adcabcf051 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs @@ -14,7 +14,17 @@ namespace Microsoft.DotNet.SourceBuild.SmokeTests; public class Config : IDisposable { + public string MsftSdkArchivePath { get; } + public string UbBuildVersion { get; } + public string PortableRid { get; } + public string UbSdkArchivePath { get; } + public string TargetRid { get; } + public string TargetArchitecture { get; } + public bool WarnOnSdkContentDiffs { get; } + + string? _downloadedMsftSdkPath = null; IMessageSink _sink; + public Config(IMessageSink sink) { _sink = sink; @@ -23,24 +33,34 @@ public Config(IMessageSink sink) PortableRid = (string)(AppContext.GetData(PortableRidSwitch) ?? throw new InvalidOperationException("Portable RID must be specified")); UbSdkArchivePath = (string)(AppContext.GetData(UbSdkArchivePathSwitch) ?? throw new InvalidOperationException("Unified Build SDK archive path must be specified")); TargetArchitecture = TargetRid.Split('-')[1]; - MsftSdkArchivePath = AppContext.GetData(MsftSdkArchivePathSwitch) as string ?? DownloadMsftSdkArchive().Result; + WarnOnSdkContentDiffs = bool.Parse((string)(AppContext.GetData(WarnOnSdkContentDiffsSwitch) ?? "false")); + MsftSdkArchivePath = (string)AppContext.GetData(MsftSdkArchivePathSwitch)!; + if (string.IsNullOrEmpty(MsftSdkArchivePath)) + { + MsftSdkArchivePath = DownloadMsftSdkArchive().Result; + } + else { + sink.OnMessage(new DiagnosticMessage($"Skipping downloading latest SDK. Using provided sdk archive: '{MsftSdkArchivePath}'")); + } + sink.OnMessage(new DiagnosticMessage($$""" + Test config values: + {{nameof(UbBuildVersion)}}='{{UbBuildVersion}}' + {{nameof(TargetRid)}}='{{TargetRid}}' + {{nameof(PortableRid)}}='{{PortableRid}}' + {{nameof(UbSdkArchivePath)}}='{{UbSdkArchivePath}}' + {{nameof(TargetArchitecture)}}='{{TargetArchitecture}}' + {{nameof(WarnOnSdkContentDiffs)}}='{{WarnOnSdkContentDiffs}}' + {{nameof(MsftSdkArchivePath)}}='{{MsftSdkArchivePath}}' + """)); } - public const string ConfigSwitchPrefix = "Microsoft.DotNet.UnifiedBuild.Tests."; - public const string BuildVersionSwitch = ConfigSwitchPrefix + nameof(UbBuildVersion); - public const string TargetRidSwitch = ConfigSwitchPrefix + nameof(TargetRid); - public const string PortableRidSwitch = ConfigSwitchPrefix + nameof(PortableRid); - public const string UbSdkArchivePathSwitch = ConfigSwitchPrefix + nameof(UbSdkArchivePath); - public const string MsftSdkArchivePathSwitch = ConfigSwitchPrefix + nameof(MsftSdkArchivePath); - - public string? MsftSdkArchivePath { get; } - public string UbBuildVersion { get; } - public string PortableRid { get; } - public string UbSdkArchivePath { get; } - public string TargetRid { get; } - public string TargetArchitecture { get; } - public bool WarnOnSdkContentDiffs { get; } - string? _downloadedMsftSdkPath = null; + const string ConfigSwitchPrefix = "Microsoft.DotNet.UnifiedBuild.Tests."; + const string BuildVersionSwitch = ConfigSwitchPrefix + nameof(UbBuildVersion); + const string TargetRidSwitch = ConfigSwitchPrefix + nameof(TargetRid); + const string PortableRidSwitch = ConfigSwitchPrefix + nameof(PortableRid); + const string UbSdkArchivePathSwitch = ConfigSwitchPrefix + nameof(UbSdkArchivePath); + const string MsftSdkArchivePathSwitch = ConfigSwitchPrefix + nameof(MsftSdkArchivePath); + const string WarnOnSdkContentDiffsSwitch = ConfigSwitchPrefix + nameof(WarnOnSdkContentDiffs); static string GetArchiveExtension(string path) { diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index de62ae195420..31301c332476 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -6,6 +6,7 @@ $(NetCurrent) enable $(DefaultExcludesInProjectFolder);assets/**/* + true @@ -33,6 +34,13 @@ $(SourceBuiltSdkVersion) + + $(UBTestsWarnOnSdkContentDiffs) + + + + $(UBTestsMsftSdkArchivePath) + diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Readme.md b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Readme.md new file mode 100644 index 000000000000..49568f86a462 --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Readme.md @@ -0,0 +1,26 @@ +# Unified Build Validation Tests + +This project compares the output of the Unified Build system with the official Microsoft Build. There are tests to compare the list of files in the SDK archive, and the versions of each managed assembly in each SDK. +Files can be excluded from each comparison in by placing the file name in one of the files in the `assets/` folder. Each file will apply to a all or a subset of RIDs depending on the suffix of the filename. For example, filenames in SdkFileDiffExclusions-linux-any.txt will be excluded from all linux SDK comparisons. + +| File Name | Purpose | +|--------------------------------------|------------------------------------------------------------------------------------------------------------------------| +| SdkFileDiffExclusions.txt | Files that should not be included in any file comparisons | +| NativeDlls.txt | Files that end in .dll or .exe that are not managed assemblies and should be excluded from assembly version validation | +| SdkAssemblyVersionDiffExclusions.txt | Files that should not be included in the assembly version validation for any other reason | + +## SDK archive file list comparison + +The files of each sdk archive iterated through, filtered and the name is written to `msftSdkFiles.txt` or `ubSdkFiles.txt` in the same directory as the test assembly. Then the test runs `git diff --no-index msftSdkFiles.txt ubSdkFiles.txt` and writes stdout to `$(OutDir)/log/UpdatedMsftToUbSdkFiles-{Rid}.diff`. This diff is then compared with the expected baseline in `./assets/baselines/MsftToUbSdkFiles-{Rid}.diff`. If the baselines are not identical, the test fails. + +### Updating the baseline + +If the test fails, but you've inspected the `UpdatedMsftToUbSdkFiles-{RID}.diff` and the changes are expected, then overwrite `./assets/baselines/MsftToUbSdkFiles-{Rid}.diff` with the updated baseline diff. + +## Sdk assembly version comparison + +This is done the similarly to the file comparison, but only looks at files that end in `.dll` or `.exe`, and filters out filename in `SdkFileDiffExclusions.txt`, `NativeDlls.txt`, and `SdkAssemblyVersionDiffExclusions.txt`. Each file name and the assembly version are written to `ub_assemblyversions.txt` or `msft_assemblyversions.txt`. Those files are then `git diff`'ed, and stdout is written to `$(OutDir)/log/UpdatedMsftToUbSdkAssemblyVersions-{Rid}.diff`. Then, the test diffs that with the baseline. + +### Updating the baseline + +If the test fails and the changes to the baseline are expected, the overwrite `./assets/baselines/MsftToUbSdkFiles-{RID}.diff` with the updated baseline. From a29048822eadcf9b338f0fd421139a2b179df69d Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Thu, 28 Mar 2024 18:10:44 -0700 Subject: [PATCH 28/41] Set correct test loggers to log all messages from test, add msftsdkpath option for debugging --- src/SourceBuild/content/eng/unifiedBuildValidation.targets | 2 +- .../content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs | 1 + .../Microsoft.DotNet.UnifiedBuild.Tests.csproj | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index f44a81aa34dd..c9cca12dcf4f 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -12,7 +12,7 @@ + Properties="ExcludeFromDotNetBuild=false;VsTestUseMSBuildOutput=true" /> diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs index 80adcabcf051..b98834c77e66 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs @@ -8,6 +8,7 @@ using System.Net; using System.Net.Http; using System.Threading.Tasks; +using Xunit; using Xunit.Abstractions; using Xunit.Sdk; diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index 31301c332476..db3655742cb0 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -7,10 +7,12 @@ enable $(DefaultExcludesInProjectFolder);assets/**/* true + console%3bverbosity=diagnostic;trx%3bverbosity=diagnostic + From 474ab95b9aae753568bf1478f038a8a8bb3cd697 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Fri, 29 Mar 2024 13:54:59 -0700 Subject: [PATCH 29/41] Set test results output dir, set ContinueOnError=true --- src/SourceBuild/content/eng/unifiedBuildValidation.targets | 2 +- .../Microsoft.DotNet.UnifiedBuild.Tests.csproj | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index c9cca12dcf4f..6bfea34e0c6c 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -11,7 +11,7 @@ diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index db3655742cb0..53d55d763e21 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -8,6 +8,7 @@ $(DefaultExcludesInProjectFolder);assets/**/* true console%3bverbosity=diagnostic;trx%3bverbosity=diagnostic + $(ArtifactsTestResultsDir) From e15c0f1bd6ce38314abee06154aa7518a2446e21 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Fri, 29 Mar 2024 15:29:57 -0700 Subject: [PATCH 30/41] Use .xml test result extension --- .../Microsoft.DotNet.UnifiedBuild.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index 53d55d763e21..c0c6c9262843 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -7,7 +7,7 @@ enable $(DefaultExcludesInProjectFolder);assets/**/* true - console%3bverbosity=diagnostic;trx%3bverbosity=diagnostic + console%3bverbosity=diagnostic;trx%3bverbosity=diagnostic%3bLogFileName=Microsoft.DotNet.UnifiedBuild.Texts.xml $(ArtifactsTestResultsDir) From 71cc6ce6a68583faa998103da9ea5299b99747ed Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Fri, 29 Mar 2024 15:59:20 -0700 Subject: [PATCH 31/41] Update src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj Co-authored-by: Viktor Hofer --- .../Microsoft.DotNet.UnifiedBuild.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index c0c6c9262843..e61ed09769d3 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -7,7 +7,7 @@ enable $(DefaultExcludesInProjectFolder);assets/**/* true - console%3bverbosity=diagnostic;trx%3bverbosity=diagnostic%3bLogFileName=Microsoft.DotNet.UnifiedBuild.Texts.xml + console%3bverbosity=diagnostic;trx%3bverbosity=diagnostic%3bLogFileName=Microsoft.DotNet.UnifiedBuild.Tests.xml $(ArtifactsTestResultsDir) From 803aacb6566be2a45febffd93993d6057849db07 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Fri, 29 Mar 2024 16:08:45 -0700 Subject: [PATCH 32/41] Update src/SourceBuild/content/eng/unifiedBuildValidation.targets Co-authored-by: Viktor Hofer --- src/SourceBuild/content/eng/unifiedBuildValidation.targets | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index 6bfea34e0c6c..4dc8c9a2039c 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -6,8 +6,7 @@ + AfterTargets="Build"> Date: Fri, 29 Mar 2024 16:10:38 -0700 Subject: [PATCH 33/41] Hardcode path to project file --- src/SourceBuild/content/eng/unifiedBuildValidation.targets | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets index 4dc8c9a2039c..df2e94f78b46 100644 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ b/src/SourceBuild/content/eng/unifiedBuildValidation.targets @@ -1,14 +1,9 @@ - - $([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'test', 'Microsoft.DotNet.UnifiedBuild.Tests')) - $([MSBuild]::NormalizePath('$(UnifiedBuildValidationTestsDir)', 'Microsoft.DotNet.UnifiedBuild.Tests.csproj')) - - - From 7ba27a5ea8c6c23426a2143b6f51a5f19dda6ea8 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Mon, 1 Apr 2024 09:37:42 -0700 Subject: [PATCH 34/41] PR Feedback: - Remove reference to Logging package - Update FileGlobbing Version to 8.0 - Move Validation target to installer repo-projects project - Set VSTestUseMSBuildOutput=true in test project file --- src/SourceBuild/content/Directory.Build.props | 2 ++ src/SourceBuild/content/eng/Versions.props | 2 +- .../content/eng/unifiedBuildValidation.targets | 13 ------------- .../content/repo-projects/installer.proj | 9 ++++++++- .../Microsoft.DotNet.UnifiedBuild.Tests.csproj | 4 +--- 5 files changed, 12 insertions(+), 18 deletions(-) delete mode 100644 src/SourceBuild/content/eng/unifiedBuildValidation.targets diff --git a/src/SourceBuild/content/Directory.Build.props b/src/SourceBuild/content/Directory.Build.props index 44fbdcb06a03..b3265733ede7 100644 --- a/src/SourceBuild/content/Directory.Build.props +++ b/src/SourceBuild/content/Directory.Build.props @@ -137,6 +137,8 @@ true true + + true diff --git a/src/SourceBuild/content/eng/Versions.props b/src/SourceBuild/content/eng/Versions.props index 20f5ad816132..272ed3018dc5 100644 --- a/src/SourceBuild/content/eng/Versions.props +++ b/src/SourceBuild/content/eng/Versions.props @@ -33,6 +33,6 @@ 9.0.0-preview.2.24128.5 2.0.0-beta4.24126.1 - 7.0.0 + 8.0.0 diff --git a/src/SourceBuild/content/eng/unifiedBuildValidation.targets b/src/SourceBuild/content/eng/unifiedBuildValidation.targets deleted file mode 100644 index df2e94f78b46..000000000000 --- a/src/SourceBuild/content/eng/unifiedBuildValidation.targets +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/src/SourceBuild/content/repo-projects/installer.proj b/src/SourceBuild/content/repo-projects/installer.proj index 78459f9977e0..bbb6d778fdd5 100644 --- a/src/SourceBuild/content/repo-projects/installer.proj +++ b/src/SourceBuild/content/repo-projects/installer.proj @@ -148,6 +148,13 @@ UseHardlinksIfPossible="true" /> - + + + diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index e61ed09769d3..9fa6a847b8fe 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -1,7 +1,5 @@  - - $(NetCurrent) enable @@ -9,11 +7,11 @@ true console%3bverbosity=diagnostic;trx%3bverbosity=diagnostic%3bLogFileName=Microsoft.DotNet.UnifiedBuild.Tests.xml $(ArtifactsTestResultsDir) + true - From 266aaabc469ef4eadd5fba335c100934d0836197 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Mon, 1 Apr 2024 10:28:17 -0700 Subject: [PATCH 35/41] Make test project self-contained to work around framework resolution issues --- .../Microsoft.DotNet.UnifiedBuild.Tests.csproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index 9fa6a847b8fe..435880f6711e 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -8,6 +8,10 @@ console%3bverbosity=diagnostic;trx%3bverbosity=diagnostic%3bLogFileName=Microsoft.DotNet.UnifiedBuild.Tests.xml $(ArtifactsTestResultsDir) true + + + true + $(BuildRid) From 0ee472fc9ec258d6deffd3046fa86154c470c6fb Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Mon, 1 Apr 2024 10:47:49 -0700 Subject: [PATCH 36/41] Use portable BuildRid instead of distro specific rid --- .../Microsoft.DotNet.UnifiedBuild.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index 435880f6711e..c10b3f2d40a3 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -11,7 +11,7 @@ true - $(BuildRid) + $([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier) From 56f1dfab5d7b3575fc360b25c75d7840469b6500 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Mon, 1 Apr 2024 11:29:12 -0700 Subject: [PATCH 37/41] Don't build self-contained --- .../Microsoft.DotNet.UnifiedBuild.Tests.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index c10b3f2d40a3..9fa6a847b8fe 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -8,10 +8,6 @@ console%3bverbosity=diagnostic;trx%3bverbosity=diagnostic%3bLogFileName=Microsoft.DotNet.UnifiedBuild.Tests.xml $(ArtifactsTestResultsDir) true - - - true - $([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier) From 60306f3cbb7f616ff2044f7642e945001ffecbfa Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Mon, 1 Apr 2024 13:55:14 -0700 Subject: [PATCH 38/41] Remove ExcludeFromDotnetBuild from restore target, add nugetconfig for test --- src/SourceBuild/content/eng/tools/init-build.proj | 5 ++--- .../Microsoft.DotNet.UnifiedBuild.Tests.csproj | 4 ++++ .../test/Microsoft.DotNet.UnifiedBuild.Tests/NuGet.config | 6 ++++++ 3 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/NuGet.config diff --git a/src/SourceBuild/content/eng/tools/init-build.proj b/src/SourceBuild/content/eng/tools/init-build.proj index 32ceb5ffcf79..d8c659214f6e 100644 --- a/src/SourceBuild/content/eng/tools/init-build.proj +++ b/src/SourceBuild/content/eng/tools/init-build.proj @@ -117,10 +117,9 @@ Condition="'$(ShortStack)' != 'true' and '$(PortableBuild)' == 'true' and '$(PgoInstrument)' != 'true'" > + Properties="MSBuildRestoreSessionId=$([System.Guid]::NewGuid())" /> + Targets="Build" /> console%3bverbosity=diagnostic;trx%3bverbosity=diagnostic%3bLogFileName=Microsoft.DotNet.UnifiedBuild.Tests.xml $(ArtifactsTestResultsDir) true + + + true + $([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/NuGet.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/NuGet.config new file mode 100644 index 000000000000..e3c623ae1e1b --- /dev/null +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/NuGet.config @@ -0,0 +1,6 @@ + + + + + + From 6acbd2fd35b700825147f31c7f4fcea397ebae7c Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Tue, 2 Apr 2024 11:26:35 -0700 Subject: [PATCH 39/41] PR feedback: - Remove setting VSTestUseMSBuildOutput - Set DotnetHostPath in runsettings - Silence output if using msbuild logger - Remove nuget config - Don't publish self-contained --- src/SourceBuild/content/eng/Versions.props | 1 - .../content/repo-projects/installer.proj | 5 ++-- .../Config.cs | 28 +++++++++++++++---- ...Microsoft.DotNet.UnifiedBuild.Tests.csproj | 8 +++--- .../NuGet.config | 6 ---- 5 files changed, 28 insertions(+), 20 deletions(-) delete mode 100644 src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/NuGet.config diff --git a/src/SourceBuild/content/eng/Versions.props b/src/SourceBuild/content/eng/Versions.props index ff8bb56557f9..6bb590a6bda5 100644 --- a/src/SourceBuild/content/eng/Versions.props +++ b/src/SourceBuild/content/eng/Versions.props @@ -33,6 +33,5 @@ 9.0.0-preview.2.24128.5 2.0.0-beta4.24126.1 - 8.0.0 diff --git a/src/SourceBuild/content/repo-projects/installer.proj b/src/SourceBuild/content/repo-projects/installer.proj index bbb6d778fdd5..04341f804920 100644 --- a/src/SourceBuild/content/repo-projects/installer.proj +++ b/src/SourceBuild/content/repo-projects/installer.proj @@ -150,11 +150,10 @@ + Condition="'$(PortableBuild)' == 'true' and '$(PgoInstrument)' != 'true' and '$(DotNetBuildSourceOnly)' != 'true'"> + ContinueOnError="true" /> diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs index b98834c77e66..61e14a22d4fa 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Config.cs @@ -22,6 +22,7 @@ public class Config : IDisposable public string TargetRid { get; } public string TargetArchitecture { get; } public bool WarnOnSdkContentDiffs { get; } + public bool NoDiagnosticMessages { get; } string? _downloadedMsftSdkPath = null; IMessageSink _sink; @@ -29,6 +30,8 @@ public class Config : IDisposable public Config(IMessageSink sink) { _sink = sink; + string? noDiagnosticMessages = (string?)AppContext.GetData(NoDiagnosticMessagesSwitch); + NoDiagnosticMessages = string.IsNullOrEmpty(noDiagnosticMessages) ? false : bool.Parse(noDiagnosticMessages); UbBuildVersion = (string)(AppContext.GetData(BuildVersionSwitch) ?? throw new InvalidOperationException("Unified Build version must be specified")); TargetRid = (string)(AppContext.GetData(TargetRidSwitch) ?? throw new InvalidOperationException("Target RID must be specified")); PortableRid = (string)(AppContext.GetData(PortableRidSwitch) ?? throw new InvalidOperationException("Portable RID must be specified")); @@ -41,9 +44,9 @@ public Config(IMessageSink sink) MsftSdkArchivePath = DownloadMsftSdkArchive().Result; } else { - sink.OnMessage(new DiagnosticMessage($"Skipping downloading latest SDK. Using provided sdk archive: '{MsftSdkArchivePath}'")); + LogMessage($"Skipping downloading latest SDK. Using provided sdk archive: '{MsftSdkArchivePath}'"); } - sink.OnMessage(new DiagnosticMessage($$""" + LogMessage($$""" Test config values: {{nameof(UbBuildVersion)}}='{{UbBuildVersion}}' {{nameof(TargetRid)}}='{{TargetRid}}' @@ -52,7 +55,8 @@ public Config(IMessageSink sink) {{nameof(TargetArchitecture)}}='{{TargetArchitecture}}' {{nameof(WarnOnSdkContentDiffs)}}='{{WarnOnSdkContentDiffs}}' {{nameof(MsftSdkArchivePath)}}='{{MsftSdkArchivePath}}' - """)); + {{nameof(NoDiagnosticMessages)}}='{{NoDiagnosticMessages}}' + """); } const string ConfigSwitchPrefix = "Microsoft.DotNet.UnifiedBuild.Tests."; @@ -62,6 +66,7 @@ public Config(IMessageSink sink) const string UbSdkArchivePathSwitch = ConfigSwitchPrefix + nameof(UbSdkArchivePath); const string MsftSdkArchivePathSwitch = ConfigSwitchPrefix + nameof(MsftSdkArchivePath); const string WarnOnSdkContentDiffsSwitch = ConfigSwitchPrefix + nameof(WarnOnSdkContentDiffs); + const string NoDiagnosticMessagesSwitch = ConfigSwitchPrefix + nameof(NoDiagnosticMessages); static string GetArchiveExtension(string path) { @@ -77,7 +82,7 @@ public async Task DownloadMsftSdkArchive() var client = new HttpClient(new HttpClientHandler() { AllowAutoRedirect = false }); var channel = UbBuildVersion[..5] + "xx"; var akaMsUrl = $"https://aka.ms/dotnet/{channel}/daily/dotnet-sdk-{TargetRid}{GetArchiveExtension(UbSdkArchivePath)}"; - _sink.OnMessage(new DiagnosticMessage($"Downloading latest sdk from '{akaMsUrl}'")); + LogMessage($"Downloading latest sdk from '{akaMsUrl}'"); var redirectResponse = await client.GetAsync(akaMsUrl); // aka.ms returns a 301 for valid redirects and a 302 to Bing for invalid URLs if (redirectResponse.StatusCode != HttpStatusCode.Moved) @@ -85,17 +90,28 @@ public async Task DownloadMsftSdkArchive() throw new InvalidOperationException($"Could not find download link for Microsoft built sdk at '{akaMsUrl}'"); } var closestUrl = redirectResponse.Headers.Location!.ToString(); - _sink.OnMessage(new DiagnosticMessage($"Redirected to '{closestUrl}'")); + LogMessage($"Redirected to '{closestUrl}'"); HttpResponseMessage packageResponse = await client.GetAsync(closestUrl); var packageUriPath = packageResponse.RequestMessage!.RequestUri!.LocalPath; _downloadedMsftSdkPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName() + "." + Path.GetFileName(packageUriPath)); - _sink.OnMessage(new DiagnosticMessage($"Downloading to '{_downloadedMsftSdkPath}'")); + LogMessage($"Downloading to '{_downloadedMsftSdkPath}'"); using (var file = File.Create(_downloadedMsftSdkPath)) { await packageResponse.Content.CopyToAsync(file); } return _downloadedMsftSdkPath; } + + private void LogMessage(string message) + { + if (NoDiagnosticMessages) + return; + if (_sink is null) + throw new InvalidOperationException("Cannot log message without a message sink"); + + _sink.OnMessage(new DiagnosticMessage(message)); + } + public void Dispose() { if (_downloadedMsftSdkPath != null) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj index c10b3f2d40a3..efeaf1159889 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj +++ b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/Microsoft.DotNet.UnifiedBuild.Tests.csproj @@ -8,10 +8,7 @@ console%3bverbosity=diagnostic;trx%3bverbosity=diagnostic%3bLogFileName=Microsoft.DotNet.UnifiedBuild.Tests.xml $(ArtifactsTestResultsDir) true - - - true - $([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier) + $(VSTestCLIRunSettings);RunConfiguration.DotNetHostPath=$(DotnetTool) @@ -46,6 +43,9 @@ $(UBTestsMsftSdkArchivePath) + + $(VSTestUseMSBuildOutput) + diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/NuGet.config b/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/NuGet.config deleted file mode 100644 index e3c623ae1e1b..000000000000 --- a/src/SourceBuild/content/test/Microsoft.DotNet.UnifiedBuild.Tests/NuGet.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - From f5322b6e8138f23ca757a3daaa93c2f3d565203c Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Tue, 2 Apr 2024 12:50:05 -0700 Subject: [PATCH 40/41] Don't pre-build unified build validation tests --- src/SourceBuild/content/eng/tools/init-build.proj | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/SourceBuild/content/eng/tools/init-build.proj b/src/SourceBuild/content/eng/tools/init-build.proj index d8c659214f6e..c6ac16295a62 100644 --- a/src/SourceBuild/content/eng/tools/init-build.proj +++ b/src/SourceBuild/content/eng/tools/init-build.proj @@ -15,7 +15,6 @@ UnpackTarballs; BuildUnifiedBuildTasks; BuildMSBuildSdkResolver; - BuildUnifiedBuildValidationTests; BuildLeakDetection; ExtractToolPackage; GenerateRootFs; @@ -113,15 +112,6 @@ - - - - - From 27553529f279047ce64e0f6a9d2749e61ce2f0b5 Mon Sep 17 00:00:00 2001 From: Jackson Schuster <36744439+jtschuster@users.noreply.github.com> Date: Tue, 2 Apr 2024 14:07:42 -0700 Subject: [PATCH 41/41] Restore, don't build test project --- src/SourceBuild/content/eng/tools/init-build.proj | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/SourceBuild/content/eng/tools/init-build.proj b/src/SourceBuild/content/eng/tools/init-build.proj index c6ac16295a62..efed2ac52d0a 100644 --- a/src/SourceBuild/content/eng/tools/init-build.proj +++ b/src/SourceBuild/content/eng/tools/init-build.proj @@ -15,6 +15,7 @@ UnpackTarballs; BuildUnifiedBuildTasks; BuildMSBuildSdkResolver; + RestoreUnifiedBuildValidationTests; BuildLeakDetection; ExtractToolPackage; GenerateRootFs; @@ -112,6 +113,13 @@ + + + +