Change exclude to include, add skipOnFalseEnv, update checking of test params, remove netstandard & update baselines

This commit is contained in:
Ella Hathaway 2023-09-07 22:17:59 +00:00
parent 2a219fb331
commit 8ec128e7e0
10 changed files with 199 additions and 170 deletions

View file

@ -26,7 +26,7 @@ jobs:
targetRid: centos.8-x64 targetRid: centos.8-x64
architecture: x64 architecture: x64
dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }} dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }}
excludeArtifactsSize: false includeArtifactsSize: true
- template: templates/jobs/sdk-diff-tests.yml - template: templates/jobs/sdk-diff-tests.yml
parameters: parameters:

View file

@ -11,9 +11,9 @@ parameters:
- name: dotnetDotnetRunId - name: dotnetDotnetRunId
type: string type: string
- name: excludeArtifactsSize - name: includeArtifactsSize
type: boolean type: boolean
default: true default: false
jobs: jobs:
- job: ${{ parameters.buildName }}_${{ parameters.architecture }} - job: ${{ parameters.buildName }}_${{ parameters.architecture }}
@ -122,7 +122,7 @@ jobs:
-e SMOKE_TESTS_TARGET_RID=${{ parameters.targetRid }} -e SMOKE_TESTS_TARGET_RID=${{ parameters.targetRid }}
-e SMOKE_TESTS_PORTABLE_RID=linux-${{ parameters.architecture }} -e SMOKE_TESTS_PORTABLE_RID=linux-${{ parameters.architecture }}
-e SMOKE_TESTS_CUSTOM_PACKAGES_PATH= -e SMOKE_TESTS_CUSTOM_PACKAGES_PATH=
-e SMOKE_TESTS_EXCLUDE_ARTIFACTSSIZE=${{ parameters.excludeArtifactsSize }} -e SMOKE_TESTS_INCLUDE_ARTIFACTSSIZE=${{ parameters.includeArtifactsSize }}
displayName: Run Tests displayName: Run Tests
workingDirectory: $(Build.SourcesDirectory) workingDirectory: $(Build.SourcesDirectory)

View file

@ -18,11 +18,10 @@ namespace Microsoft.DotNet.SourceBuild.SmokeTests;
[Trait("Category", "SdkContent")] [Trait("Category", "SdkContent")]
public class ArtifactsSizeTest : SmokeTests public class ArtifactsSizeTest : SmokeTests
{ {
private const int SizeThresholdPercentage = 25;
private static readonly string BaselineFilePath = BaselineHelper.GetBaselineFilePath($"ArtifactsSizes/{Config.TargetRid}.txt"); private static readonly string BaselineFilePath = BaselineHelper.GetBaselineFilePath($"ArtifactsSizes/{Config.TargetRid}.txt");
private readonly Dictionary<string, long> BaselineFileContent = new(); private readonly Dictionary<string, long> BaselineFileContent = new();
private Dictionary<string, int> FilePathCountMap = new(); private Dictionary<string, int> FilePathCountMap = new();
private const int SizeThresholdPercentage = 25;
public ArtifactsSizeTest(ITestOutputHelper outputHelper) : base(outputHelper) public ArtifactsSizeTest(ITestOutputHelper outputHelper) : base(outputHelper)
{ {
@ -41,13 +40,41 @@ public class ArtifactsSizeTest : SmokeTests
} }
} }
[SkippableFact(new[] { Config.SourceBuiltArtifactsPathEnv, Config.SdkTarballPathEnv, Config.TargetRidEnv, Config.ExcludeArtifactsSizeEnv }, skipOnNullOrWhiteSpaceEnv: true, skipOnTrueEnv: true)]
[SkippableFact(Config.IncludeArtifactsSizeEnv, skipOnFalseEnv: true)]
public void CompareArtifactsToBaseline() public void CompareArtifactsToBaseline()
{ {
Assert.NotNull(Config.SourceBuiltArtifactsPath); OutputHelper.LogAndThrowIfNullOrEmpty(Config.SourceBuiltArtifactsPath, Config.SourceBuiltArtifactsPathEnv);
Assert.NotNull(Config.SdkTarballPath); OutputHelper.LogAndThrowIfNullOrEmpty(Config.SdkTarballPath, Config.SdkTarballPathEnv);
Assert.NotNull(Config.TargetRid); OutputHelper.LogAndThrowIfNullOrEmpty(Config.TargetRid, Config.TargetRidEnv);
var tarEntries = ProcessSdkAndArtifactsTarballs();
foreach (var entry in tarEntries)
{
if (!BaselineFileContent.TryGetValue(entry.FilePath, out long baselineBytes))
{
OutputHelper.LogWarningMessage($"{entry.FilePath} does not exist in baseline. Adding it to the baseline file");
}
else
{
CompareFileSizes(entry.FilePath, entry.Bytes, baselineBytes);
}
}
try
{
string actualFilePath = Path.Combine(DotNetHelper.LogsDirectory, $"UpdatedArtifactsSizes_{Config.TargetRid}.txt");
File.WriteAllLines(actualFilePath, tarEntries.Select(entry => $"{entry.FilePath}: {entry.Bytes}"));
}
catch (IOException ex)
{
throw new InvalidOperationException($"An error occurred while copying the baselines file: {BaselineFilePath}", ex);
}
}
private (string FilePath, long Bytes)[] ProcessSdkAndArtifactsTarballs()
{
string tempTarballDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); string tempTarballDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
Directory.CreateDirectory(tempTarballDir); Directory.CreateDirectory(tempTarballDir);
@ -65,29 +92,9 @@ public class ArtifactsSizeTest : SmokeTests
.OrderBy(entry => entry.FilePath) .OrderBy(entry => entry.FilePath)
.ToArray(); .ToArray();
foreach (var entry in tarEntries)
{
if (!BaselineFileContent.TryGetValue(entry.FilePath, out long baselineBytes))
{
OutputHelper.LogWarningMessage($"{entry.FilePath} does not exist in baseline. Adding it to the baseline file");
}
else
{
CompareFileSizes(entry.FilePath, entry.Bytes, baselineBytes);
}
}
Directory.Delete(tempTarballDir, true); Directory.Delete(tempTarballDir, true);
try return tarEntries;
{
string actualFilePath = Path.Combine(DotNetHelper.LogsDirectory, $"Updated_ArtifactsSizes_{Config.TargetRid}.txt");
File.WriteAllLines(actualFilePath, tarEntries.Select(entry => $"{entry.FilePath}: {entry.Bytes}"));
}
catch (IOException ex)
{
throw new InvalidOperationException($"An error occurred while copying the baselines file: {BaselineFilePath}", ex);
}
} }
private string ProcessFilePath(string originalPath) private string ProcessFilePath(string originalPath)

View file

@ -96,7 +96,7 @@ namespace Microsoft.DotNet.SourceBuild.SmokeTests
{ {
// Remove version numbers for examples like "roslyn4.1", "net8.0", and "netstandard2.1". // Remove version numbers for examples like "roslyn4.1", "net8.0", and "netstandard2.1".
string pathSeparator = Regex.Escape(Path.DirectorySeparatorChar.ToString()); string pathSeparator = Regex.Escape(Path.DirectorySeparatorChar.ToString());
string result = Regex.Replace(source, $@"{pathSeparator}(net|netstandard|roslyn)[1-9]+\.[0-9]+{pathSeparator}", match => string result = Regex.Replace(source, $@"{pathSeparator}(net|roslyn)[1-9]+\.[0-9]+{pathSeparator}", match =>
{ {
string wordPart = match.Groups[1].Value; string wordPart = match.Groups[1].Value;
return $"{Path.DirectorySeparatorChar}{wordPart}{NonSemanticVersionPlaceholder}{Path.DirectorySeparatorChar}"; return $"{Path.DirectorySeparatorChar}{wordPart}{NonSemanticVersionPlaceholder}{Path.DirectorySeparatorChar}";

View file

@ -11,7 +11,7 @@ internal static class Config
{ {
public const string DotNetDirectoryEnv = "SMOKE_TESTS_DOTNET_DIR"; public const string DotNetDirectoryEnv = "SMOKE_TESTS_DOTNET_DIR";
public const string ExcludeOmniSharpEnv = "SMOKE_TESTS_EXCLUDE_OMNISHARP"; public const string ExcludeOmniSharpEnv = "SMOKE_TESTS_EXCLUDE_OMNISHARP";
public const string ExcludeArtifactsSizeEnv = "SMOKE_TESTS_EXCLUDE_ARTIFACTSSIZE"; public const string IncludeArtifactsSizeEnv = "SMOKE_TESTS_INCLUDE_ARTIFACTSSIZE";
public const string MsftSdkTarballPathEnv = "SMOKE_TESTS_MSFT_SDK_TARBALL_PATH"; public const string MsftSdkTarballPathEnv = "SMOKE_TESTS_MSFT_SDK_TARBALL_PATH";
public const string PoisonReportPathEnv = "SMOKE_TESTS_POISON_REPORT_PATH"; public const string PoisonReportPathEnv = "SMOKE_TESTS_POISON_REPORT_PATH";
public const string PortableRidEnv = "SMOKE_TESTS_PORTABLE_RID"; public const string PortableRidEnv = "SMOKE_TESTS_PORTABLE_RID";

View file

@ -13,13 +13,13 @@ namespace Microsoft.DotNet.SourceBuild.SmokeTests;
/// </summary> /// </summary>
internal class SkippableFactAttribute : FactAttribute internal class SkippableFactAttribute : FactAttribute
{ {
public SkippableFactAttribute(string envName, bool skipOnNullOrWhiteSpaceEnv = false, bool skipOnTrueEnv = false, string[] skipArchitectures = null) => public SkippableFactAttribute(string envName, bool skipOnNullOrWhiteSpaceEnv = false, bool skipOnTrueEnv = false, bool skipOnFalseEnv = false, string[] skipArchitectures = null) =>
EvaluateSkips(skipOnNullOrWhiteSpaceEnv, skipOnTrueEnv, skipArchitectures, (skip) => Skip = skip, envName); EvaluateSkips(skipOnNullOrWhiteSpaceEnv, skipOnTrueEnv, skipOnFalseEnv, skipArchitectures, (skip) => Skip = skip, envName);
public SkippableFactAttribute(string[] envNames, bool skipOnNullOrWhiteSpaceEnv = false, bool skipOnTrueEnv = false, string[] skipArchitectures = null) => public SkippableFactAttribute(string[] envNames, bool skipOnNullOrWhiteSpaceEnv = false, bool skipOnTrueEnv = false, bool skipOnFalseEnv = false, string[] skipArchitectures = null) =>
EvaluateSkips(skipOnNullOrWhiteSpaceEnv, skipOnTrueEnv, skipArchitectures, (skip) => Skip = skip, envNames); EvaluateSkips(skipOnNullOrWhiteSpaceEnv, skipOnTrueEnv, skipOnFalseEnv, skipArchitectures, (skip) => Skip = skip, envNames);
public static void EvaluateSkips(bool skipOnNullOrWhiteSpaceEnv, bool skipOnTrueEnv, string[] skipArchitectures, Action<string> setSkip, params string[] envNames) public static void EvaluateSkips(bool skipOnNullOrWhiteSpaceEnv, bool skipOnTrueEnv, bool skipOnFalseEnv, string[] skipArchitectures, Action<string> setSkip, params string[] envNames)
{ {
foreach (string envName in envNames) foreach (string envName in envNames)
{ {
@ -30,11 +30,19 @@ internal class SkippableFactAttribute : FactAttribute
setSkip($"Skipping because `{envName}` is null or whitespace"); setSkip($"Skipping because `{envName}` is null or whitespace");
break; break;
} }
else if (skipOnTrueEnv && bool.TryParse(envValue, out bool boolValue) && boolValue) else if ((skipOnTrueEnv || skipOnFalseEnv) && bool.TryParse(envValue, out bool boolValue))
{
if (skipOnTrueEnv && boolValue)
{ {
setSkip($"Skipping because `{envName}` is set to True"); setSkip($"Skipping because `{envName}` is set to True");
break; break;
} }
else if (skipOnFalseEnv && !boolValue)
{
setSkip($"Skipping because `{envName}` is set to False");
break;
}
}
} }
if (skipArchitectures != null) { if (skipArchitectures != null) {

View file

@ -11,9 +11,9 @@ namespace Microsoft.DotNet.SourceBuild.SmokeTests;
/// </summary> /// </summary>
internal class SkippableTheoryAttribute : TheoryAttribute internal class SkippableTheoryAttribute : TheoryAttribute
{ {
public SkippableTheoryAttribute(string envName, bool skipOnNullOrWhiteSpaceEnv = false, bool skipOnTrueEnv = false, string[] skipArchitectures = null) => public SkippableTheoryAttribute(string envName, bool skipOnNullOrWhiteSpaceEnv = false, bool skipOnTrueEnv = false, bool skipOnFalseEnv = false, string[] skipArchitectures = null) =>
SkippableFactAttribute.EvaluateSkips(skipOnNullOrWhiteSpaceEnv, skipOnTrueEnv, skipArchitectures, (skip) => Skip = skip, envName); SkippableFactAttribute.EvaluateSkips(skipOnNullOrWhiteSpaceEnv, skipOnTrueEnv, skipOnFalseEnv, skipArchitectures, (skip) => Skip = skip, envName);
public SkippableTheoryAttribute(string[] envNames, bool skipOnNullOrWhiteSpaceEnv = false, bool skipOnTrueEnv = false, string[] skipArchitectures = null) => public SkippableTheoryAttribute(string[] envNames, bool skipOnNullOrWhiteSpaceEnv = false, bool skipOnTrueEnv = false, bool skipOnFalseEnv = false, string[] skipArchitectures = null) =>
SkippableFactAttribute.EvaluateSkips(skipOnNullOrWhiteSpaceEnv, skipOnTrueEnv, skipArchitectures, (skip) => Skip = skip, envNames); SkippableFactAttribute.EvaluateSkips(skipOnNullOrWhiteSpaceEnv, skipOnTrueEnv, skipOnFalseEnv, skipArchitectures, (skip) => Skip = skip, envNames);
} }

View file

@ -11,6 +11,7 @@ using System.IO.Compression;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Xunit;
using Xunit.Abstractions; using Xunit.Abstractions;
namespace Microsoft.DotNet.SourceBuild.SmokeTests; namespace Microsoft.DotNet.SourceBuild.SmokeTests;
@ -113,4 +114,17 @@ public static class Utilities
outputHelper.WriteLine($"{Environment.NewLine}{prefix}{message}.{Environment.NewLine}"); outputHelper.WriteLine($"{Environment.NewLine}{prefix}{message}.{Environment.NewLine}");
outputHelper.WriteLine("##vso[task.complete result=SucceededWithIssues;]"); outputHelper.WriteLine("##vso[task.complete result=SucceededWithIssues;]");
} }
public static void LogAndThrowIfNullOrEmpty(this ITestOutputHelper outputHelper, string? variable, string variableName)
{
if (string.IsNullOrEmpty(variable) || string.IsNullOrWhiteSpace(variable))
{
string prefix = "##vso[task.logissue type=error;]";
string message = $"{variableName} is null, empty, or whitespace.";
outputHelper.WriteLine($"{Environment.NewLine}{prefix}{message}.{Environment.NewLine}");
throw new ArgumentException(message);
}
}
} }

View file

@ -1261,128 +1261,128 @@ packs/Microsoft.NETCore.App.Runtime.banana-rid/x.y.z/runtimes/banana-rid/native/
packs/Microsoft.NETCore.App.Runtime.banana-rid/x.y.z/runtimes/banana-rid/native/libSystem.Security.Cryptography.Native.OpenSsl.so: 413872 packs/Microsoft.NETCore.App.Runtime.banana-rid/x.y.z/runtimes/banana-rid/native/libSystem.Security.Cryptography.Native.OpenSsl.so: 413872
packs/NETStandard.Library.Ref/x.y.z/data/FrameworkList.xml: 25681 packs/NETStandard.Library.Ref/x.y.z/data/FrameworkList.xml: 25681
packs/NETStandard.Library.Ref/x.y.z/data/PackageOverrides.txt: 3177 packs/NETStandard.Library.Ref/x.y.z/data/PackageOverrides.txt: 3177
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/Microsoft.Win32.Primitives.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/Microsoft.Win32.Primitives.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/mscorlib.dll: 37888 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/mscorlib.dll: 37888
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/netstandard.dll: 1597440 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/netstandard.dll: 1597440
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/netstandard.xml: 16615788 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/netstandard.xml: 16615788
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.AppContext.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.AppContext.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Buffers.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Buffers.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Collections.Concurrent.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Collections.Concurrent.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Collections.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Collections.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Collections.NonGeneric.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Collections.NonGeneric.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Collections.Specialized.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Collections.Specialized.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.ComponentModel.Composition.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.ComponentModel.Composition.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.ComponentModel.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.ComponentModel.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.ComponentModel.EventBasedAsync.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.ComponentModel.EventBasedAsync.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.ComponentModel.Primitives.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.ComponentModel.Primitives.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.ComponentModel.TypeConverter.dll: 5120 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.ComponentModel.TypeConverter.dll: 5120
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Console.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Console.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Core.dll: 8192 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Core.dll: 8192
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Data.Common.dll: 4096 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Data.Common.dll: 4096
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Data.dll: 7680 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Data.dll: 7680
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Diagnostics.Contracts.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Diagnostics.Contracts.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Diagnostics.Debug.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Diagnostics.Debug.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Diagnostics.FileVersionInfo.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Diagnostics.FileVersionInfo.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Diagnostics.Process.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Diagnostics.Process.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Diagnostics.StackTrace.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Diagnostics.StackTrace.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Diagnostics.TextWriterTraceListener.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Diagnostics.TextWriterTraceListener.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Diagnostics.Tools.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Diagnostics.Tools.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Diagnostics.TraceSource.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Diagnostics.TraceSource.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Diagnostics.Tracing.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Diagnostics.Tracing.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.dll: 30208 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.dll: 30208
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Drawing.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Drawing.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Drawing.Primitives.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Drawing.Primitives.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Dynamic.Runtime.dll: 4096 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Dynamic.Runtime.dll: 4096
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Globalization.Calendars.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Globalization.Calendars.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Globalization.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Globalization.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Globalization.Extensions.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Globalization.Extensions.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.IO.Compression.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.IO.Compression.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.IO.Compression.FileSystem.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.IO.Compression.FileSystem.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.IO.Compression.ZipFile.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.IO.Compression.ZipFile.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.IO.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.IO.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.IO.FileSystem.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.IO.FileSystem.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.IO.FileSystem.DriveInfo.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.IO.FileSystem.DriveInfo.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.IO.FileSystem.Primitives.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.IO.FileSystem.Primitives.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.IO.FileSystem.Watcher.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.IO.FileSystem.Watcher.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.IO.IsolatedStorage.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.IO.IsolatedStorage.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.IO.MemoryMappedFiles.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.IO.MemoryMappedFiles.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.IO.Pipes.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.IO.Pipes.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.IO.UnmanagedMemoryStream.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.IO.UnmanagedMemoryStream.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Linq.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Linq.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Linq.Expressions.dll: 4608 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Linq.Expressions.dll: 4608
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Linq.Parallel.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Linq.Parallel.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Linq.Queryable.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Linq.Queryable.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Memory.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Memory.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Net.dll: 4608 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Net.dll: 4608
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Net.Http.dll: 4608 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Net.Http.dll: 4608
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Net.NameResolution.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Net.NameResolution.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Net.NetworkInformation.dll: 4096 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Net.NetworkInformation.dll: 4096
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Net.Ping.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Net.Ping.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Net.Primitives.dll: 4096 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Net.Primitives.dll: 4096
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Net.Requests.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Net.Requests.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Net.Security.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Net.Security.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Net.Sockets.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Net.Sockets.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Net.WebHeaderCollection.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Net.WebHeaderCollection.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Net.WebSockets.Client.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Net.WebSockets.Client.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Net.WebSockets.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Net.WebSockets.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Numerics.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Numerics.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Numerics.Vectors.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Numerics.Vectors.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.ObjectModel.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.ObjectModel.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Reflection.DispatchProxy.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Reflection.DispatchProxy.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Reflection.dll: 4096 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Reflection.dll: 4096
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Reflection.Emit.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Reflection.Emit.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Reflection.Emit.ILGeneration.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Reflection.Emit.ILGeneration.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Reflection.Emit.Lightweight.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Reflection.Emit.Lightweight.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Reflection.Extensions.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Reflection.Extensions.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Reflection.Primitives.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Reflection.Primitives.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Resources.Reader.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Resources.Reader.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Resources.ResourceManager.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Resources.ResourceManager.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Resources.Writer.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Resources.Writer.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Runtime.CompilerServices.VisualC.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Runtime.CompilerServices.VisualC.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Runtime.dll: 11264 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Runtime.dll: 11264
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Runtime.Extensions.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Runtime.Extensions.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Runtime.Handles.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Runtime.Handles.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Runtime.InteropServices.dll: 6144 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Runtime.InteropServices.dll: 6144
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Runtime.InteropServices.RuntimeInformation.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Runtime.InteropServices.RuntimeInformation.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Runtime.Numerics.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Runtime.Numerics.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Runtime.Serialization.dll: 4608 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Runtime.Serialization.dll: 4608
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Runtime.Serialization.Formatters.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Runtime.Serialization.Formatters.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Runtime.Serialization.Json.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Runtime.Serialization.Json.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Runtime.Serialization.Primitives.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Runtime.Serialization.Primitives.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Runtime.Serialization.Xml.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Runtime.Serialization.Xml.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Security.Claims.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Security.Claims.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Security.Cryptography.Algorithms.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Security.Cryptography.Algorithms.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Security.Cryptography.Csp.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Security.Cryptography.Csp.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Security.Cryptography.Encoding.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Security.Cryptography.Encoding.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Security.Cryptography.Primitives.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Security.Cryptography.Primitives.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Security.Cryptography.X509Certificates.dll: 4608 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Security.Cryptography.X509Certificates.dll: 4608
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Security.Principal.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Security.Principal.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Security.SecureString.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Security.SecureString.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.ServiceModel.Web.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.ServiceModel.Web.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Text.Encoding.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Text.Encoding.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Text.Encoding.Extensions.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Text.Encoding.Extensions.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Text.RegularExpressions.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Text.RegularExpressions.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Threading.dll: 4096 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Threading.dll: 4096
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Threading.Overlapped.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Threading.Overlapped.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Threading.Tasks.dll: 4096 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Threading.Tasks.dll: 4096
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Threading.Tasks.Extensions.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Threading.Tasks.Extensions.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Threading.Tasks.Parallel.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Threading.Tasks.Parallel.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Threading.Thread.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Threading.Thread.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Threading.ThreadPool.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Threading.ThreadPool.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Threading.Timer.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Threading.Timer.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Transactions.dll: 4096 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Transactions.dll: 4096
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.ValueTuple.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.ValueTuple.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Web.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Web.dll: 3072
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Windows.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Windows.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Xml.dll: 11264 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Xml.dll: 11264
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Xml.Linq.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Xml.Linq.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Xml.ReaderWriter.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Xml.ReaderWriter.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Xml.Serialization.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Xml.Serialization.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Xml.XDocument.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Xml.XDocument.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Xml.XmlDocument.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Xml.XmlDocument.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Xml.XmlSerializer.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Xml.XmlSerializer.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Xml.XPath.dll: 3584 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Xml.XPath.dll: 3584
packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Xml.XPath.XDocument.dll: 3072 packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Xml.XPath.XDocument.dll: 3072
Roslyn.Diagnostics.Analyzers.x.y.z-1.nupkg: 787880 Roslyn.Diagnostics.Analyzers.x.y.z-1.nupkg: 787880
Roslyn.Diagnostics.Analyzers.x.y.z-2.nupkg: 787881 Roslyn.Diagnostics.Analyzers.x.y.z-2.nupkg: 787881
Roslyn.Diagnostics.Analyzers.x.y.z.nupkg: 787868 Roslyn.Diagnostics.Analyzers.x.y.z.nupkg: 787868

View file

@ -45,7 +45,7 @@ index ------------
./packs/Microsoft.NETCore.App.Ref/x.y.z/ ./packs/Microsoft.NETCore.App.Ref/x.y.z/
./packs/Microsoft.NETCore.App.Ref/x.y.z/analyzers/ ./packs/Microsoft.NETCore.App.Ref/x.y.z/analyzers/
@@ ------------ @@ @@ ------------ @@
./packs/NETStandard.Library.Ref/x.y.z/ref/netstandardx.y/System.Xml.XPath.XDocument.dll ./packs/NETStandard.Library.Ref/x.y.z/ref/netstandard2.1/System.Xml.XPath.XDocument.dll
./sdk-manifests/ ./sdk-manifests/
./sdk-manifests/x.y.z/ ./sdk-manifests/x.y.z/
-./sdk-manifests/x.y.z/ -./sdk-manifests/x.y.z/