From f6e3766b7adfac2863e91ba6453912d24d0fbd9e Mon Sep 17 00:00:00 2001 From: Chris Rummel Date: Thu, 31 Mar 2022 19:12:59 -0500 Subject: [PATCH] Add source-build leak detection (#13434) --- .../job/source-build-run-tarball-build.yml | 9 +- .../steps/source-build-build-tarball.yml | 21 +- src/SourceBuild/tarball/content/build.proj | 7 +- src/SourceBuild/tarball/content/build.sh | 4 + .../BaselineHelper.cs | 30 +- .../Config.cs | 5 + .../DotNetFormatTests.cs | 14 +- .../PoisonTests.cs | 34 + .../SdkContentTests.cs | 22 +- .../FormatTestFormatted.cs} | 0 .../assets/baselines/MsftToSbSdk.diff | 196 +-- .../assets/baselines/PoisonUsage.txt | 1328 +++++++++++++++++ .../content/tools-local/init-build.proj | 35 +- .../CheckForPoison.cs | 6 +- ...Net.SourceBuild.Tasks.LeakDetection.csproj | 6 +- 15 files changed, 1569 insertions(+), 148 deletions(-) create mode 100644 src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/PoisonTests.cs rename src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/{FormatTestExpectedFormatted.cs => baselines/FormatTestFormatted.cs} (100%) create mode 100644 src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/PoisonUsage.txt diff --git a/src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml b/src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml index b04465727..b6fd560d6 100644 --- a/src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml +++ b/src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml @@ -43,6 +43,7 @@ jobs: _BootstrapPrep: false _BuildArch: x64 _Container: ${{ parameters.centOS7Container }} + _EnablePoison: false _ExcludeOmniSharpTests: true _Platform: linux _RunOnline: true @@ -50,6 +51,7 @@ jobs: _BootstrapPrep: false _BuildArch: x64 _Container: ${{ parameters.centOS7Container }} + _EnablePoison: false _ExcludeOmniSharpTests: true _Platform: linux _RunOnline: false @@ -58,6 +60,7 @@ jobs: _BootstrapPrep: false _BuildArch: x64 _Container: ${{ parameters.centOS8Container }} + _EnablePoison: false _ExcludeOmniSharpTests: false _Platform: linux _RunOnline: false @@ -65,6 +68,7 @@ jobs: _BootstrapPrep: false _BuildArch: x64 _Container: ${{ parameters.centOSStream9Container }} + _EnablePoison: false _ExcludeOmniSharpTests: false _Platform: linux _RunOnline: false @@ -72,6 +76,7 @@ jobs: _BootstrapPrep: false _BuildArch: x64 _Container: ${{ parameters.fedora33Container }} + _EnablePoison: true _ExcludeOmniSharpTests: false _Platform: linux _RunOnline: false @@ -79,6 +84,7 @@ jobs: _BootstrapPrep: false _BuildArch: x64 _Container: ${{ parameters.ubuntu1804Container }} + _EnablePoison: false _ExcludeOmniSharpTests: false _Platform: linux _RunOnline: false @@ -97,6 +103,7 @@ jobs: parameters: buildArch: $(_BuildArch) container: $(_Container) + enablePoison: $(_EnablePoison) excludeOmniSharpTests: $(_ExcludeOmniSharpTests) installerBuildResourceId: ${{ parameters.installerBuildResourceId }} platform: $(_Platform) @@ -104,7 +111,7 @@ jobs: set -x customPrepArgs= - if [ '$(_BootstrapPrep)' = 'true' ]; then + if [[ '$(_BootstrapPrep)' == 'true' ]]; then customPrepArgs='--bootstrap' fi diff --git a/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-build-tarball.yml b/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-build-tarball.yml index 1cec502ab..99e54f4ab 100644 --- a/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-build-tarball.yml +++ b/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-build-tarball.yml @@ -10,6 +10,9 @@ parameters: # Container image to build within container: null + # Enable the poison report + enablePoison: false + # Skip running the OmniSharp smoke-tests excludeOmniSharpTests: false @@ -26,7 +29,7 @@ parameters: prepScript: null # Whether or not to build online - runOnline: null + runOnline: false # Directory to build the tarball in tarballDir: @@ -55,7 +58,7 @@ steps: set -x resourceIdPathSegment= - if [ '${{ parameters.installerBuildResourceId }}' != 'current' ]; then + if [[ '${{ parameters.installerBuildResourceId }}' != 'current' ]]; then resourceIdPathSegment='${{ parameters.installerBuildResourceId }}/' fi @@ -74,12 +77,16 @@ steps: networkArgs= customBuildArgs= - if [ '${{ parameters.runOnline}}' = 'true' ]; then + if [[ '${{ parameters.runOnline }}' == 'true' ]]; then customBuildArgs='--online' else networkArgs='--network none' fi + if [[ '${{ parameters.enablePoison }}' == 'true' ]]; then + customBuildArgs="$customBuildArgs --poison" + fi + docker run --rm -v ${{ parameters.tarballDir }}:/tarball -w /tarball ${networkArgs} ${{ parameters.container }} ./build.sh ${customBuildArgs} ${{ parameters.additionalBuildArgs }} -- /p:CleanWhileBuilding=true displayName: Build Tarball @@ -92,6 +99,7 @@ steps: dockerVolumeArgs="-v ${{ parameters.tarballDir }}:/tarball" dockerEnvArgs="-e SMOKE_TESTS_EXCLUDE_OMNISHARP=${{ parameters.excludeOmniSharpTests}} -e SMOKE_TESTS_WARN_SDK_CONTENT_DIFFS=true" + poisonArg='' if [[ '${{ parameters.isBootstrapped }}' != 'true' && '${{ parameters.installerBuildResourceId }}' != 'current' ]]; then dockerVolumeArgs+=" -v $(PIPELINE.WORKSPACE)/${{ parameters.installerBuildResourceId }}/BlobArtifacts/:/BlobArtifacts" @@ -99,7 +107,12 @@ steps: dockerEnvArgs+=" -e SMOKE_TESTS_MSFT_SDK_TARBALL_PATH=/BlobArtifacts/$msftSdkTarballName" fi - docker run --rm $dockerVolumeArgs -w /tarball $dockerEnvArgs ${{ parameters.container }} ./build.sh --run-smoke-test ${{ parameters.additionalBuildArgs }} -- /p:SmokeTestConsoleVerbosity=detailed + if [[ '${{ parameters.enablePoison }}' == 'true' ]]; then + poisonArg='--poison' + dockerEnvArgs+=" -e SMOKE_TESTS_WARN_POISON_DIFFS=true" + fi + + docker run --rm $dockerVolumeArgs -w /tarball $dockerEnvArgs ${{ parameters.container }} ./build.sh $poisonArg --run-smoke-test ${{ parameters.additionalBuildArgs }} -- /p:SmokeTestConsoleVerbosity=detailed displayName: Run Tests # Don't use CopyFiles@2 as it encounters permissions issues because it indexes all files in the source directory graph. diff --git a/src/SourceBuild/tarball/content/build.proj b/src/SourceBuild/tarball/content/build.proj index c9310fa6c..4c76732f7 100644 --- a/src/SourceBuild/tarball/content/build.proj +++ b/src/SourceBuild/tarball/content/build.proj @@ -68,12 +68,16 @@ + + + + + SMOKE_TESTS_POISON_REPORT_PATH=$(PoisonUsageReportFile); %(SdkTarballItem.Identity) normal @@ -101,7 +106,7 @@ EnvironmentVariables=" SMOKE_TESTS_SDK_TARBALL_PATH=$(SdkTarballPath); SMOKE_TESTS_TARGET_RID=$(TargetRid); - " /> + $(CustomTestEnvVars)" /> use the specified directory of previously-built packages" echo " --with-sdk use the SDK in the specified directory for bootstrapping" + echo " --poison build with poisoning checks" echo " --run-smoke-test don't build; run smoke tests" echo "use -- to send the remaining arguments to MSBuild" echo "" @@ -35,6 +36,9 @@ while :; do --online) MSBUILD_ARGUMENTS+=( "/p:BuildWithOnlineSources=true") ;; + --poison) + MSBUILD_ARGUMENTS+=( "/p:EnablePoison=true") + ;; --with-packages) CUSTOM_PREVIOUSLY_BUILT_PACKAGES_DIR="$(cd -P "$2" && pwd)" if [ ! -d "$CUSTOM_PREVIOUSLY_BUILT_PACKAGES_DIR" ]; then diff --git a/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/BaselineHelper.cs b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/BaselineHelper.cs index 39d7bd389..abcf4dba9 100644 --- a/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/BaselineHelper.cs +++ b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/BaselineHelper.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; +using System.Text.RegularExpressions; using Xunit; using Xunit.Abstractions; @@ -36,18 +37,17 @@ namespace Microsoft.DotNet.SourceBuild.SmokeTests public static void CompareContents(string baselineFileName, string actualContents, ITestOutputHelper outputHelper, bool warnOnDiffs = false) { - string baselineFilePath = GetBaselineFilePath(baselineFileName); - string actualFilePath = Path.Combine(Environment.CurrentDirectory, $"{baselineFileName}"); File.WriteAllText(actualFilePath, actualContents); - CompareFiles(baselineFilePath, actualFilePath, outputHelper, warnOnDiffs); + CompareFiles(baselineFileName, actualFilePath, outputHelper, warnOnDiffs); } - public static void CompareFiles(string baselineFilePath, string actualFilePath, ITestOutputHelper outputHelper, bool warnOnDiffs = false) + public static void CompareFiles(string baselineFileName, string actualFilePath, ITestOutputHelper outputHelper, bool warnOnDiffs = false) { - string baselineFileText = File.ReadAllText(baselineFilePath); - string actualFileText = File.ReadAllText(actualFilePath); + string baselineFilePath = GetBaselineFilePath(baselineFileName); + string baselineFileText = File.ReadAllText(baselineFilePath).Trim(); + string actualFileText = File.ReadAllText(actualFilePath).Trim(); string? message = null; @@ -84,5 +84,23 @@ namespace Microsoft.DotNet.SourceBuild.SmokeTests public static string GetAssetsDirectory() => Path.Combine(Directory.GetCurrentDirectory(), "assets"); private static string GetBaselineFilePath(string baselineFileName) => Path.Combine(GetAssetsDirectory(), "baselines", baselineFileName); + + public static string RemoveRids(string diff) => diff.Replace(Config.TargetRid, "banana.rid"); + + public static string RemoveVersions(string source) + { + // Remove semantic versions + // Regex source: https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string + 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-]+)*))?"); + string result = semanticVersionRegex.Replace(source, $"x.y.z"); + + // Remove netx.y path segments + string pathSeparator = Regex.Escape(Path.DirectorySeparatorChar.ToString()); + Regex netTfmRegex = new($"{pathSeparator}net[1-9]+\\.[0-9]+{pathSeparator}"); + return netTfmRegex.Replace(result, $"{Path.DirectorySeparatorChar}netx.y{Path.DirectorySeparatorChar}"); + } } } diff --git a/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Config.cs b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Config.cs index 9abf0c299..0aaab59ff 100644 --- a/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Config.cs +++ b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Config.cs @@ -12,18 +12,23 @@ internal static class Config public const string DotNetDirectoryEnv = "SMOKE_TESTS_DOTNET_DIR"; public const string ExcludeOmniSharpEnv = "SMOKE_TESTS_EXCLUDE_OMNISHARP"; public const string MsftSdkTarballPathEnv = "SMOKE_TESTS_MSFT_SDK_TARBALL_PATH"; + public const string PoisonReportPathEnv = "SMOKE_TESTS_POISON_REPORT_PATH"; public const string PrereqsPathEnv = "SMOKE_TESTS_PREREQS_PATH"; public const string SdkTarballPathEnv = "SMOKE_TESTS_SDK_TARBALL_PATH"; public const string TargetRidEnv = "SMOKE_TESTS_TARGET_RID"; + public const string WarnPoisonDiffsEnv = "SMOKE_TESTS_WARN_POISON_DIFFS"; public const string WarnSdkContentDiffsEnv = "SMOKE_TESTS_WARN_SDK_CONTENT_DIFFS"; public static string DotNetDirectory { get; } = Environment.GetEnvironmentVariable(DotNetDirectoryEnv) ?? Path.Combine(Directory.GetCurrentDirectory(), ".dotnet"); public static string? MsftSdkTarballPath { get; } = Environment.GetEnvironmentVariable(MsftSdkTarballPathEnv); + public static string? PoisonReportPath { get; } = Environment.GetEnvironmentVariable(PoisonReportPathEnv); public static string? PrereqsPath { get; } = Environment.GetEnvironmentVariable(PrereqsPathEnv); public static string? SdkTarballPath { get; } = Environment.GetEnvironmentVariable(SdkTarballPathEnv); public static string TargetRid { get; } = Environment.GetEnvironmentVariable(TargetRidEnv) ?? throw new InvalidOperationException($"'{Config.TargetRidEnv}' must be specified"); + public static bool WarnOnPoisonDiffs { get; } = + bool.TryParse(Environment.GetEnvironmentVariable(WarnPoisonDiffsEnv), out bool excludeOnlineTests) && excludeOnlineTests; public static bool WarnOnSdkContentDiffs { get; } = bool.TryParse(Environment.GetEnvironmentVariable(WarnSdkContentDiffsEnv), out bool excludeOnlineTests) && excludeOnlineTests; } diff --git a/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetFormatTests.cs b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetFormatTests.cs index cad0d30d4..d6ec47734 100644 --- a/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetFormatTests.cs +++ b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetFormatTests.cs @@ -10,8 +10,9 @@ namespace Microsoft.DotNet.SourceBuild.SmokeTests; public class DotNetFormatTests : SmokeTests { + private const string TestFileName = "FormatTest.cs"; private const string UnformattedFileName = "FormatTestUnformatted.cs"; - private const string ExpectedFormattedFileName = "FormatTestExpectedFormatted.cs"; + private const string ExpectedFormattedFileName = "FormatTestFormatted.cs"; public DotNetFormatTests(ITestOutputHelper outputHelper) : base(outputHelper) { } @@ -21,20 +22,17 @@ public class DotNetFormatTests : SmokeTests [Fact] public void FormatProject() { - string assetsDirectory = BaselineHelper.GetAssetsDirectory(); - - string unformattedCsFilePath = Path.Combine(assetsDirectory, UnformattedFileName); - string expectedFormattedCsFilePath = Path.Combine(assetsDirectory, ExpectedFormattedFileName); + string unformattedCsFilePath = Path.Combine(BaselineHelper.GetAssetsDirectory(), UnformattedFileName); string projectDirectory = DotNetHelper.ExecuteNew("console", nameof(FormatProject), "C#"); string projectFilePath = Path.Combine(projectDirectory, nameof(FormatProject) + ".csproj"); - string formattedCsFilePath = Path.Combine(projectDirectory, UnformattedFileName); + string testFilePath = Path.Combine(projectDirectory, TestFileName); - File.Copy(unformattedCsFilePath, formattedCsFilePath); + File.Copy(unformattedCsFilePath, testFilePath); DotNetHelper.ExecuteCmd($"format {projectFilePath}"); - BaselineHelper.CompareFiles(expectedFormattedCsFilePath, formattedCsFilePath, OutputHelper); + BaselineHelper.CompareFiles(ExpectedFormattedFileName, testFilePath, OutputHelper); } } diff --git a/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/PoisonTests.cs b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/PoisonTests.cs new file mode 100644 index 000000000..11ea0667f --- /dev/null +++ b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/PoisonTests.cs @@ -0,0 +1,34 @@ +// 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; +using System.Text.RegularExpressions; +using Xunit.Abstractions; + +namespace Microsoft.DotNet.SourceBuild.SmokeTests +{ + public class PoisonTests : SmokeTests + { + public PoisonTests(ITestOutputHelper outputHelper) : base(outputHelper) { } + + [SkippableFact(Config.PoisonReportPathEnv, skipOnNullOrWhiteSpace: true)] + public void VerifyUsage() + { + if (!File.Exists(Config.PoisonReportPath)) + { + throw new InvalidOperationException($"Poison report '{Config.PoisonReportPath}' does not exist."); + } + + string currentPoisonReport = File.ReadAllText(Config.PoisonReportPath); + currentPoisonReport = RemoveHashes(currentPoisonReport); + currentPoisonReport = BaselineHelper.RemoveRids(currentPoisonReport); + currentPoisonReport = BaselineHelper.RemoveVersions(currentPoisonReport); + + BaselineHelper.CompareContents("PoisonUsage.txt", currentPoisonReport, OutputHelper, Config.WarnOnPoisonDiffs); + } + + private static string RemoveHashes(string source) => Regex.Replace(source, "^\\s*.*(\r\n?|\n)", string.Empty, RegexOptions.Multiline); + } +} diff --git a/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/SdkContentTests.cs b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/SdkContentTests.cs index 74657726c..2ca4b03a4 100644 --- a/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/SdkContentTests.cs +++ b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/SdkContentTests.cs @@ -31,9 +31,9 @@ public class SdkContentTests : SmokeTests WriteTarballFileList(Config.SdkTarballPath, sbFileListingFileName); string diff = BaselineHelper.DiffFiles(msftFileListingFileName, sbFileListingFileName, OutputHelper); - diff = RemoveVersionedPaths(diff); + diff = BaselineHelper.RemoveVersions(diff); diff = RemoveDiffMarkers(diff); - diff = RemoveRids(diff); + diff = BaselineHelper.RemoveRids(diff); BaselineHelper.CompareContents("MsftToSbSdk.diff", diff, OutputHelper, Config.WarnOnSdkContentDiffs); } @@ -57,22 +57,4 @@ public class SdkContentTests : SmokeTests Regex diffSegmentRegex = new("^@@ .* @@", RegexOptions.Multiline); return diffSegmentRegex.Replace(result, "@@ ------------ @@"); } - - private static string RemoveRids(string diff) => diff.Replace(Config.TargetRid, "banana.rid"); - - private static string RemoveVersionedPaths(string source) - { - // Remove semantic version path segments - string pathSeparator = Regex.Escape(Path.DirectorySeparatorChar.ToString()); - // Regex source: https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string - Regex semanticVersionRegex = new( - $"{pathSeparator}(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-]+)*))?{pathSeparator}"); - string result = semanticVersionRegex.Replace(source, $"{Path.DirectorySeparatorChar}x.y.z{Path.DirectorySeparatorChar}"); - - // Remove net.x.y path segments - Regex netTfmRegex = new($"{pathSeparator}net[1-9]*.[0-9]{pathSeparator}"); - return netTfmRegex.Replace(result, $"{Path.DirectorySeparatorChar}netx.y{Path.DirectorySeparatorChar}"); - } } diff --git a/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/FormatTestExpectedFormatted.cs b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/FormatTestFormatted.cs similarity index 100% rename from src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/FormatTestExpectedFormatted.cs rename to src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/FormatTestFormatted.cs diff --git a/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/MsftToSbSdk.diff b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/MsftToSbSdk.diff index 6418004c8..f1600a4aa 100644 --- a/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/MsftToSbSdk.diff +++ b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/MsftToSbSdk.diff @@ -860,65 +860,65 @@ index ------------ ./sdk/x.y.z/Sdks/FSharp.NET.Sdk/Sdk/Sdk.props ./sdk/x.y.z/Sdks/FSharp.NET.Sdk/Sdk/Sdk.targets ./sdk/x.y.z/Sdks/Microsoft.Docker.Sdk/ -+./sdk/x.y.z/Sdks/Microsoft.Docker.Sdk/microsoft.docker.sdk.1.1.0.csproj ++./sdk/x.y.z/Sdks/Microsoft.Docker.Sdk/microsoft.docker.sdk.x.y.z.csproj ./sdk/x.y.z/Sdks/Microsoft.Docker.Sdk/Sdk/ ./sdk/x.y.z/Sdks/Microsoft.Docker.Sdk/Sdk/Sdk.props ./sdk/x.y.z/Sdks/Microsoft.Docker.Sdk/Sdk/Sdk.targets @@ ------------ @@ - ./sdk/x.y.z/Sdks/Microsoft.NET.ILLink.Tasks/tools/netx.y/System.Buffers.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.ILLink.Tasks/tools/netx.y/System.Collections.Immutable.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.ILLink.Tasks/tools/netx.y/System.Memory.dll --./sdk/x.y.z/Sdks/Microsoft.NET.ILLink.Tasks/tools/netx.y/System.Numerics.Vectors.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.ILLink.Tasks/tools/netx.y/System.Reflection.Metadata.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.ILLink.Tasks/tools/netx.y/System.Runtime.CompilerServices.Unsafe.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.ILLink.Tasks/tools/net472/System.Buffers.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.ILLink.Tasks/tools/net472/System.Collections.Immutable.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.ILLink.Tasks/tools/net472/System.Memory.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.ILLink.Tasks/tools/net472/System.Numerics.Vectors.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.ILLink.Tasks/tools/net472/System.Reflection.Metadata.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.ILLink.Tasks/tools/net472/System.Runtime.CompilerServices.Unsafe.dll ./sdk/x.y.z/Sdks/Microsoft.NET.ILLink.Tasks/tools/netx.y/ @@ ------------ @@ ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/targets/TransformTargets/Transforms/EnvironmentNoLocation.transform ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/targets/TransformTargets/Transforms/EnvironmentWithLocation.transform ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/cs/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/cs/Microsoft.NET.Sdk.Publish.Tasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/de/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/de/Microsoft.NET.Sdk.Publish.Tasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/es/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/es/Microsoft.NET.Sdk.Publish.Tasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/fr/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/fr/Microsoft.NET.Sdk.Publish.Tasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/it/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/it/Microsoft.NET.Sdk.Publish.Tasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/ja/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/ja/Microsoft.NET.Sdk.Publish.Tasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/ko/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/ko/Microsoft.NET.Sdk.Publish.Tasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/Microsoft.Bcl.AsyncInterfaces.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/Microsoft.NET.Sdk.Publish.Tasks.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/Microsoft.NET.Sdk.Publish.Tasks.dll.config --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/Microsoft.Web.Delegation.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/Microsoft.Web.Deployment.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/Microsoft.Web.Deployment.Tracing.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/Microsoft.Web.XmlTransform.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/pl/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/pl/Microsoft.NET.Sdk.Publish.Tasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/pt-BR/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/pt-BR/Microsoft.NET.Sdk.Publish.Tasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/ru/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/ru/Microsoft.NET.Sdk.Publish.Tasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/System.Buffers.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/System.Memory.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/System.Numerics.Vectors.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/System.Runtime.CompilerServices.Unsafe.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/System.Security.Cryptography.ProtectedData.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/System.Text.Encodings.Web.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/System.Text.Json.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/System.Threading.Tasks.Extensions.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/System.ValueTuple.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/tr/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/tr/Microsoft.NET.Sdk.Publish.Tasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/zh-Hans/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/zh-Hans/Microsoft.NET.Sdk.Publish.Tasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/zh-Hant/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/zh-Hant/Microsoft.NET.Sdk.Publish.Tasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/cs/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/cs/Microsoft.NET.Sdk.Publish.Tasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/de/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/de/Microsoft.NET.Sdk.Publish.Tasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/es/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/es/Microsoft.NET.Sdk.Publish.Tasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/fr/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/fr/Microsoft.NET.Sdk.Publish.Tasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/it/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/it/Microsoft.NET.Sdk.Publish.Tasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/ja/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/ja/Microsoft.NET.Sdk.Publish.Tasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/ko/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/ko/Microsoft.NET.Sdk.Publish.Tasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/Microsoft.Bcl.AsyncInterfaces.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/Microsoft.NET.Sdk.Publish.Tasks.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/Microsoft.NET.Sdk.Publish.Tasks.dll.config +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/Microsoft.Web.Delegation.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/Microsoft.Web.Deployment.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/Microsoft.Web.Deployment.Tracing.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/Microsoft.Web.XmlTransform.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/pl/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/pl/Microsoft.NET.Sdk.Publish.Tasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/pt-BR/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/pt-BR/Microsoft.NET.Sdk.Publish.Tasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/ru/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/ru/Microsoft.NET.Sdk.Publish.Tasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/System.Buffers.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/System.Memory.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/System.Numerics.Vectors.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/System.Runtime.CompilerServices.Unsafe.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/System.Security.Cryptography.ProtectedData.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/System.Text.Encodings.Web.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/System.Text.Json.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/System.Threading.Tasks.Extensions.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/System.ValueTuple.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/tr/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/tr/Microsoft.NET.Sdk.Publish.Tasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/zh-Hans/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/zh-Hans/Microsoft.NET.Sdk.Publish.Tasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/zh-Hant/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/net472/zh-Hant/Microsoft.NET.Sdk.Publish.Tasks.resources.dll ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/ ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/cs/ ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/cs/Microsoft.NET.Sdk.Publish.Tasks.resources.dll @@ -934,13 +934,13 @@ index ------------ ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/tr/ ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Publish/tools/netx.y/tr/Microsoft.NET.Sdk.Publish.Tasks.resources.dll @@ ------------ @@ - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/netx.y/System.Buffers.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/netx.y/System.Collections.Immutable.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/netx.y/System.Memory.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/netx.y/System.Numerics.Vectors.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/netx.y/System.Reflection.Metadata.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/netx.y/System.Runtime.CompilerServices.Unsafe.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/netx.y/System.Text.Encodings.Web.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/net472/System.Buffers.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/net472/System.Collections.Immutable.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/net472/System.Memory.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/net472/System.Numerics.Vectors.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/net472/System.Reflection.Metadata.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/net472/System.Runtime.CompilerServices.Unsafe.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tasks/net472/System.Text.Encodings.Web.dll @@ ------------ @@ ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/rzc.deps.json ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Razor/tools/rzc.dll @@ -972,40 +972,40 @@ index ------------ -./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/targets/System.Windows.Forms.Analyzers.props -./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/THIRD-PARTY-NOTICES.TXT -./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/cs/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/cs/PresentationBuildTasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/de/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/de/PresentationBuildTasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/es/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/es/PresentationBuildTasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/fr/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/fr/PresentationBuildTasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/it/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/it/PresentationBuildTasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/ja/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/ja/PresentationBuildTasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/ko/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/ko/PresentationBuildTasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/pl/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/pl/PresentationBuildTasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/PresentationBuildTasks.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/pt-BR/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/pt-BR/PresentationBuildTasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/ru/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/ru/PresentationBuildTasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/System.Collections.Immutable.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/System.Memory.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/System.Numerics.Vectors.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/System.Reflection.Metadata.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/System.Reflection.MetadataLoadContext.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/System.Runtime.CompilerServices.Unsafe.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/tr/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/tr/PresentationBuildTasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/zh-Hans/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/zh-Hans/PresentationBuildTasks.resources.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/zh-Hant/ --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/zh-Hant/PresentationBuildTasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/cs/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/cs/PresentationBuildTasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/de/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/de/PresentationBuildTasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/es/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/es/PresentationBuildTasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/fr/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/fr/PresentationBuildTasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/it/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/it/PresentationBuildTasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/ja/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/ja/PresentationBuildTasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/ko/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/ko/PresentationBuildTasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/pl/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/pl/PresentationBuildTasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/PresentationBuildTasks.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/pt-BR/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/pt-BR/PresentationBuildTasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/ru/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/ru/PresentationBuildTasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/System.Collections.Immutable.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/System.Memory.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/System.Numerics.Vectors.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/System.Reflection.Metadata.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/System.Reflection.MetadataLoadContext.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/System.Runtime.CompilerServices.Unsafe.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/tr/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/tr/PresentationBuildTasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/zh-Hans/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/zh-Hans/PresentationBuildTasks.resources.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/zh-Hant/ +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/net472/zh-Hant/PresentationBuildTasks.resources.dll -./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/ -./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/cs/ -./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.WindowsDesktop/tools/netx.y/cs/PresentationBuildTasks.resources.dll @@ -1041,13 +1041,13 @@ index ------------ ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Worker/Sdk/ ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk.Worker/Sdk/Sdk.props @@ ------------ @@ - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/netx.y/System.Buffers.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/netx.y/System.Collections.Immutable.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/netx.y/System.Memory.dll --./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/netx.y/System.Numerics.Vectors.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/netx.y/System.Reflection.Metadata.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/netx.y/System.Runtime.CompilerServices.Unsafe.dll - ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/netx.y/System.Text.Encodings.Web.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/net472/System.Buffers.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/net472/System.Collections.Immutable.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/net472/System.Memory.dll +-./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/net472/System.Numerics.Vectors.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/net472/System.Reflection.Metadata.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/net472/System.Runtime.CompilerServices.Unsafe.dll + ./sdk/x.y.z/Sdks/Microsoft.NET.Sdk/tools/net472/System.Text.Encodings.Web.dll @@ ------------ @@ ./sdk/x.y.z/Sdks/NuGet.Build.Tasks.Pack/buildCrossTargeting/ ./sdk/x.y.z/Sdks/NuGet.Build.Tasks.Pack/buildCrossTargeting/NuGet.Build.Tasks.Pack.targets diff --git a/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/PoisonUsage.txt b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/PoisonUsage.txt new file mode 100644 index 000000000..25f79024b --- /dev/null +++ b/src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/baselines/PoisonUsage.txt @@ -0,0 +1,1328 @@ + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + + AssemblyAttribute + + diff --git a/src/SourceBuild/tarball/content/tools-local/init-build.proj b/src/SourceBuild/tarball/content/tools-local/init-build.proj index 1070cf0be..701f76c0c 100644 --- a/src/SourceBuild/tarball/content/tools-local/init-build.proj +++ b/src/SourceBuild/tarball/content/tools-local/init-build.proj @@ -14,14 +14,15 @@ - - $(ReferencePackagesDir)%3B$(PrebuiltPackagesPath) + + $(ReferencePackagesDir)%3B$(PrebuiltPackagesPath)%3B$(PrebuiltSourceBuiltPackagesPath) + + tasks\Microsoft.DotNet.SourceBuild.Tasks.XPlat\Microsoft.DotNet.SourceBuild.Tasks.XPlat.csproj;tasks\SourceBuild.MSBuildSdkResolver\SourceBuild.MSBuildSdkResolver.csproj + + + + tasks\Microsoft.DotNet.SourceBuild.Tasks.LeakDetection\Microsoft.DotNet.SourceBuild.Tasks.LeakDetection.csproj + + + + + + @@ -185,10 +206,14 @@ + + + + diff --git a/src/SourceBuild/tarball/content/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/CheckForPoison.cs b/src/SourceBuild/tarball/content/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/CheckForPoison.cs index 3fad37c47..d3c683c56 100644 --- a/src/SourceBuild/tarball/content/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/CheckForPoison.cs +++ b/src/SourceBuild/tarball/content/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/CheckForPoison.cs @@ -134,7 +134,7 @@ namespace Microsoft.DotNet.SourceBuild.Tasks.LeakDetection // if we should write out the poison report, do that if (!string.IsNullOrWhiteSpace(PoisonReportOutputFilePath)) { - File.WriteAllText(PoisonReportOutputFilePath, (new XElement("PrebuiltLeakReport", poisons.Select(p => p.ToXml()))).ToString()); + File.WriteAllText(PoisonReportOutputFilePath, (new XElement("PrebuiltLeakReport", poisons.OrderBy(p => p.Path).Select(p => p.ToXml()))).ToString()); } if (FailOnPoisonFound && poisons.Count() > 0) @@ -167,8 +167,6 @@ namespace Microsoft.DotNet.SourceBuild.Tasks.LeakDetection IEnumerable catalogedPackages = ReadCatalog(catalogedPackagesFilePath); var poisons = new List(); var candidateQueue = new Queue(initialCandidates); - // avoid collisions between nupkgs with the same name - var dirCounter = 0; if (!string.IsNullOrWhiteSpace(OverrideTempPath)) { Directory.CreateDirectory(OverrideTempPath); @@ -184,7 +182,7 @@ namespace Microsoft.DotNet.SourceBuild.Tasks.LeakDetection // add its contents to the list to be checked. if (ZipFileExtensions.Concat(TarFileExtensions).Concat(TarGzFileExtensions).Any(e => checking.ToLowerInvariant().EndsWith(e))) { - var tempCheckingDir = Path.Combine(tempDir.FullName, Path.GetRandomFileName(), Path.GetFileNameWithoutExtension(checking) + "." + (++dirCounter).ToString()); + var tempCheckingDir = Path.Combine(tempDir.FullName, Path.GetFileNameWithoutExtension(checking)); PoisonedFileEntry result = ExtractAndCheckZipFileOnly(catalogedPackages, checking, markerFileName, tempCheckingDir, candidateQueue); if (result != null) { diff --git a/src/SourceBuild/tarball/content/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection.csproj b/src/SourceBuild/tarball/content/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection.csproj index b9eefcd65..c00725cc7 100644 --- a/src/SourceBuild/tarball/content/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection.csproj +++ b/src/SourceBuild/tarball/content/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection/Microsoft.DotNet.SourceBuild.Tasks.LeakDetection.csproj @@ -1,7 +1,7 @@  - netcoreapp6.0 + net6.0 true $(LeakDetectionTasksBinDir) @@ -26,4 +26,8 @@ + + + +