From abf36618a856ae52899ed0a7a4ac1b1ddac34c6c Mon Sep 17 00:00:00 2001 From: Nikita Balabaev Date: Wed, 14 Feb 2024 15:43:29 +0100 Subject: [PATCH 1/9] Fix Microsoft.Extensions.AuditReports output path --- .../buildTransitive/Microsoft.Extensions.AuditReports.targets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Packages/Microsoft.Extensions.AuditReports/buildTransitive/Microsoft.Extensions.AuditReports.targets b/src/Packages/Microsoft.Extensions.AuditReports/buildTransitive/Microsoft.Extensions.AuditReports.targets index e17bcc0e734..080cde59c52 100644 --- a/src/Packages/Microsoft.Extensions.AuditReports/buildTransitive/Microsoft.Extensions.AuditReports.targets +++ b/src/Packages/Microsoft.Extensions.AuditReports/buildTransitive/Microsoft.Extensions.AuditReports.targets @@ -1,9 +1,9 @@ - $(OutputPath) + $([System.IO.Path]::GetFullPath('$(OutputPath)')) - $(OutputPath) + $([System.IO.Path]::GetFullPath('$(OutputPath)')) From 6e3639e9cabbe75e792bc5cd97846d91778f6587 Mon Sep 17 00:00:00 2001 From: Nikita Balabaev Date: Thu, 15 Feb 2024 18:48:37 +0100 Subject: [PATCH 2/9] interim commit --- .../MetricsReportsGenerator.cs | 34 +++++++++++++++---- .../Microsoft.Extensions.AuditReports.props | 1 + .../Microsoft.Extensions.AuditReports.targets | 9 ----- src/Shared/DiagnosticIds/DiagnosticIds.cs | 6 ++++ 4 files changed, 35 insertions(+), 15 deletions(-) delete mode 100644 src/Packages/Microsoft.Extensions.AuditReports/buildTransitive/Microsoft.Extensions.AuditReports.targets diff --git a/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs b/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs index a093982abe1..098149b2b0f 100644 --- a/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs +++ b/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs @@ -1,6 +1,7 @@ // 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.Linq; @@ -9,6 +10,7 @@ using Microsoft.CodeAnalysis.Diagnostics; using Microsoft.Gen.Metrics.Model; using Microsoft.Gen.Shared; +using Microsoft.Shared.DiagnosticIds; namespace Microsoft.Gen.MetricsReports; @@ -52,13 +54,23 @@ public void Execute(GeneratorExecutionContext context) var options = context.AnalyzerConfigOptions.GlobalOptions; - var path = (_reportOutputPath != null || options.TryGetValue(ReportOutputPath, out _reportOutputPath)) + var path = TryRetrieveOptionsValue(options, ReportOutputPath, ref _reportOutputPath) ? _reportOutputPath : GetDefaultReportOutputPath(options); if (string.IsNullOrWhiteSpace(path)) { - // Report diagnostic. Tell that it is either missing or visibility to compiler. + // Report diagnostic: + var diagnostic = new DiagnosticDescriptor( + DiagnosticIds.AuditReports.AUDREP000, + "Metrics report won't be generated.", + "Either missing or it's not set. The report won't be generated.", + "MetricsReports", + DiagnosticSeverity.Info, + isEnabledByDefault: true); + + context.ReportDiagnostic(Diagnostic.Create(diagnostic, location: null)); + return; } @@ -90,18 +102,28 @@ private static ReportedMetricClass[] MapToCommonModel(IReadOnlyList return reportedMetrics.ToArray(); } + private static bool TryRetrieveOptionsValue(AnalyzerConfigOptions options, string name, ref string? value) + => (value != null || options.TryGetValue(name, out value)) + && !string.IsNullOrWhiteSpace(value); + private string GetDefaultReportOutputPath(AnalyzerConfigOptions options) { if (_currentProjectPath != null && _compilationOutputPath != null) { - return _currentProjectPath + _compilationOutputPath; + return Path.Combine(_currentProjectPath, _compilationOutputPath); } - _ = options.TryGetValue(CompilationOutputPath, out _compilationOutputPath); - _ = options.TryGetValue(CurrentProjectPath, out _currentProjectPath); + var gotOutput = TryRetrieveOptionsValue(options, CompilationOutputPath, ref _compilationOutputPath); + if (gotOutput && + !string.IsNullOrWhiteSpace(_compilationOutputPath) && + Path.IsPathRooted(_compilationOutputPath)) + { + return _compilationOutputPath!; + } + var gotProjectDir = TryRetrieveOptionsValue(options, CurrentProjectPath, ref _currentProjectPath); return string.IsNullOrWhiteSpace(_currentProjectPath) || string.IsNullOrWhiteSpace(_compilationOutputPath) ? string.Empty - : _currentProjectPath + _compilationOutputPath; + : Path.Combine(_currentProjectPath, _compilationOutputPath); } } diff --git a/src/Packages/Microsoft.Extensions.AuditReports/buildTransitive/Microsoft.Extensions.AuditReports.props b/src/Packages/Microsoft.Extensions.AuditReports/buildTransitive/Microsoft.Extensions.AuditReports.props index 2a7fd855217..978d52a35ea 100644 --- a/src/Packages/Microsoft.Extensions.AuditReports/buildTransitive/Microsoft.Extensions.AuditReports.props +++ b/src/Packages/Microsoft.Extensions.AuditReports/buildTransitive/Microsoft.Extensions.AuditReports.props @@ -14,5 +14,6 @@ + diff --git a/src/Packages/Microsoft.Extensions.AuditReports/buildTransitive/Microsoft.Extensions.AuditReports.targets b/src/Packages/Microsoft.Extensions.AuditReports/buildTransitive/Microsoft.Extensions.AuditReports.targets deleted file mode 100644 index 080cde59c52..00000000000 --- a/src/Packages/Microsoft.Extensions.AuditReports/buildTransitive/Microsoft.Extensions.AuditReports.targets +++ /dev/null @@ -1,9 +0,0 @@ - - - $([System.IO.Path]::GetFullPath('$(OutputPath)')) - - - - $([System.IO.Path]::GetFullPath('$(OutputPath)')) - - diff --git a/src/Shared/DiagnosticIds/DiagnosticIds.cs b/src/Shared/DiagnosticIds/DiagnosticIds.cs index da7d80a43aa..6903887daed 100644 --- a/src/Shared/DiagnosticIds/DiagnosticIds.cs +++ b/src/Shared/DiagnosticIds/DiagnosticIds.cs @@ -111,6 +111,12 @@ internal static class Metrics internal const string METGEN018 = nameof(METGEN018); internal const string METGEN019 = nameof(METGEN019); } + + internal static class AuditReports + { + internal const string AUDREP000 = nameof(AUDREP000); + internal const string AUDREP001 = nameof(AUDREP001); + } } #pragma warning restore S1144 From b2964e329c54820cc4be3e10cc425955060d581a Mon Sep 17 00:00:00 2001 From: Nikita Balabaev Date: Fri, 16 Feb 2024 19:03:31 +0100 Subject: [PATCH 3/9] simplify logic; increase test coverage --- .../MetricsReportsGenerator.cs | 43 ++++----- .../Unit/GeneratorTests.cs | 7 +- .../Unit/GeneratorTests.cs | 89 +++++++++---------- 3 files changed, 64 insertions(+), 75 deletions(-) diff --git a/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs b/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs index 098149b2b0f..f05f0489e5e 100644 --- a/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs +++ b/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs @@ -1,7 +1,6 @@ // 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.Linq; @@ -24,10 +23,6 @@ public class MetricsReportsGenerator : ISourceGenerator private const string CurrentProjectPath = "build_property.projectdir"; private const string FileName = "MetricsReport.json"; - private string? _compilationOutputPath; - private string? _currentProjectPath; - private string? _reportOutputPath; - public void Initialize(GeneratorInitializationContext context) { context.RegisterForSyntaxNotifications(ClassDeclarationSyntaxReceiver.Create); @@ -37,8 +32,9 @@ public void Execute(GeneratorExecutionContext context) { context.CancellationToken.ThrowIfCancellationRequested(); - var receiver = context.SyntaxReceiver as ClassDeclarationSyntaxReceiver; - if (receiver == null || receiver.ClassDeclarations.Count == 0 || !GeneratorUtilities.ShouldGenerateReport(context, GenerateMetricDefinitionReport)) + if (context.SyntaxReceiver is not ClassDeclarationSyntaxReceiver receiver || + receiver.ClassDeclarations.Count == 0 || + !GeneratorUtilities.ShouldGenerateReport(context, GenerateMetricDefinitionReport)) { return; } @@ -54,8 +50,8 @@ public void Execute(GeneratorExecutionContext context) var options = context.AnalyzerConfigOptions.GlobalOptions; - var path = TryRetrieveOptionsValue(options, ReportOutputPath, ref _reportOutputPath) - ? _reportOutputPath + var path = TryRetrieveOptionsValue(options, ReportOutputPath, out var reportOutputPath) + ? reportOutputPath! : GetDefaultReportOutputPath(options); if (string.IsNullOrWhiteSpace(path)) @@ -64,7 +60,7 @@ public void Execute(GeneratorExecutionContext context) var diagnostic = new DiagnosticDescriptor( DiagnosticIds.AuditReports.AUDREP000, "Metrics report won't be generated.", - "Either missing or it's not set. The report won't be generated.", + "Both and are missing or not set. The report won't be generated.", "MetricsReports", DiagnosticSeverity.Info, isEnabledByDefault: true); @@ -102,28 +98,25 @@ private static ReportedMetricClass[] MapToCommonModel(IReadOnlyList return reportedMetrics.ToArray(); } - private static bool TryRetrieveOptionsValue(AnalyzerConfigOptions options, string name, ref string? value) - => (value != null || options.TryGetValue(name, out value)) - && !string.IsNullOrWhiteSpace(value); + private static bool TryRetrieveOptionsValue(AnalyzerConfigOptions options, string name, out string? value) + => options.TryGetValue(name, out value) && !string.IsNullOrWhiteSpace(value); - private string GetDefaultReportOutputPath(AnalyzerConfigOptions options) + private static string GetDefaultReportOutputPath(AnalyzerConfigOptions options) { - if (_currentProjectPath != null && _compilationOutputPath != null) + if (!TryRetrieveOptionsValue(options, CompilationOutputPath, out var compilationOutputPath)) { - return Path.Combine(_currentProjectPath, _compilationOutputPath); + return string.Empty; } - var gotOutput = TryRetrieveOptionsValue(options, CompilationOutputPath, ref _compilationOutputPath); - if (gotOutput && - !string.IsNullOrWhiteSpace(_compilationOutputPath) && - Path.IsPathRooted(_compilationOutputPath)) + // is absolute - return it right away: + if (Path.IsPathRooted(compilationOutputPath)) { - return _compilationOutputPath!; + return compilationOutputPath!; } - var gotProjectDir = TryRetrieveOptionsValue(options, CurrentProjectPath, ref _currentProjectPath); - return string.IsNullOrWhiteSpace(_currentProjectPath) || string.IsNullOrWhiteSpace(_compilationOutputPath) - ? string.Empty - : Path.Combine(_currentProjectPath, _compilationOutputPath); + // Get and combine it with if the former isn't empty: + return TryRetrieveOptionsValue(options, CurrentProjectPath, out var currentProjectPath) + ? Path.Combine(currentProjectPath!, compilationOutputPath!) + : string.Empty; } } diff --git a/test/Generators/Microsoft.Gen.ComplianceReports/Unit/GeneratorTests.cs b/test/Generators/Microsoft.Gen.ComplianceReports/Unit/GeneratorTests.cs index ec64e24d623..8f93e78504a 100644 --- a/test/Generators/Microsoft.Gen.ComplianceReports/Unit/GeneratorTests.cs +++ b/test/Generators/Microsoft.Gen.ComplianceReports/Unit/GeneratorTests.cs @@ -95,7 +95,7 @@ static async Task> RunGenerator(string code, string ou { Assembly.GetAssembly(typeof(ILogger))!, Assembly.GetAssembly(typeof(LoggerMessageAttribute))!, - Assembly.GetAssembly(typeof(Microsoft.Extensions.Compliance.Classification.DataClassification))!, + Assembly.GetAssembly(typeof(Extensions.Compliance.Classification.DataClassification))!, }, new[] { @@ -120,9 +120,10 @@ public async Task MissingDataClassificationSymbol() { Source, }, - new OptionsProvider()).ConfigureAwait(false); + new OptionsProvider()) + .ConfigureAwait(false); - Assert.Equal(0, d.Count); + Assert.Empty(d); } private sealed class Options : AnalyzerConfigOptions diff --git a/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs b/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs index 9a291bbedf1..36b36d5b515 100644 --- a/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs +++ b/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs @@ -17,15 +17,8 @@ namespace Microsoft.Gen.MetricsReports.Test; -public class GeneratorTests +public class GeneratorTests(ITestOutputHelper output) { - private readonly ITestOutputHelper _output; - - public GeneratorTests(ITestOutputHelper output) - { - _output = output; - } - [Fact] public void GeneratorShouldNotDoAnythingIfGeneralExecutionContextDoesNotHaveClassDeclarationSyntaxReceiver() { @@ -35,79 +28,75 @@ public void GeneratorShouldNotDoAnythingIfGeneralExecutionContextDoesNotHaveClas Assert.Null(defaultGeneralExecutionContext.SyntaxReceiver); } - [Fact] - public async Task TestAll() + [Theory] + [CombinatorialData] + public async Task TestAll(bool useExplicitReportPath) { foreach (var inputFile in Directory.GetFiles("TestClasses")) { var stem = Path.GetFileNameWithoutExtension(inputFile); - var goldenReportFile = $"GoldenReports/{stem}.json"; + var goldenReportPath = Path.Combine("GoldenReports", Path.ChangeExtension(stem, ".json")); - var tmp = Path.Combine(Directory.GetCurrentDirectory(), "MetricsReport.json"); + var generatedReportPath = Path.Combine(Directory.GetCurrentDirectory(), "MetricsReport.json"); - if (File.Exists(goldenReportFile)) + if (File.Exists(goldenReportPath)) { - var d = await RunGenerator(File.ReadAllText(inputFile)); + var d = await RunGenerator(await File.ReadAllTextAsync(inputFile), useExplicitReportPath); Assert.Empty(d); - var golden = File.ReadAllText(goldenReportFile); - var generated = File.ReadAllText(tmp); + var golden = await File.ReadAllTextAsync(goldenReportPath); + var generated = await File.ReadAllTextAsync(generatedReportPath); if (golden != generated) { - _output.WriteLine($"MISMATCH: goldenReportFile {goldenReportFile}, tmp {tmp}"); - _output.WriteLine("----"); - _output.WriteLine("golden:"); - _output.WriteLine(golden); - _output.WriteLine("----"); - _output.WriteLine("generated:"); - _output.WriteLine(generated); - _output.WriteLine("----"); + output.WriteLine($"MISMATCH: goldenReportFile {goldenReportPath}, tmp {generatedReportPath}"); + output.WriteLine("----"); + output.WriteLine("golden:"); + output.WriteLine(golden); + output.WriteLine("----"); + output.WriteLine("generated:"); + output.WriteLine(generated); + output.WriteLine("----"); } + File.Delete(generatedReportPath); Assert.Equal(golden, generated); - File.Delete(tmp); } else { // generate the golden file if it doesn't already exist - _output.WriteLine($"Generating golden report: {goldenReportFile}"); - _ = await RunGenerator(File.ReadAllText(inputFile)); - File.Copy(tmp, goldenReportFile); + output.WriteLine($"Generating golden report: {goldenReportPath}"); + _ = await RunGenerator(await File.ReadAllTextAsync(inputFile), useExplicitReportPath); + File.Copy(generatedReportPath, goldenReportPath); } } } private static async Task> RunGenerator( string code, - bool includeBaseReferences = true, - bool includeMeterReferences = true, + bool setReportPath, CancellationToken cancellationToken = default) { - Assembly[]? refs = null; - if (includeMeterReferences) - { - refs = new[] - { - Assembly.GetAssembly(typeof(Meter))!, - Assembly.GetAssembly(typeof(CounterAttribute))!, - Assembly.GetAssembly(typeof(HistogramAttribute))!, - Assembly.GetAssembly(typeof(GaugeAttribute))!, - }; - } + Assembly[] refs = + [ + Assembly.GetAssembly(typeof(Meter))!, + Assembly.GetAssembly(typeof(CounterAttribute))!, + Assembly.GetAssembly(typeof(HistogramAttribute))!, + Assembly.GetAssembly(typeof(GaugeAttribute))! + ]; var (d, _) = await RoslynTestUtils.RunGenerator( new MetricsReportsGenerator(), refs, new[] { code }, - new OptionsProvider(), - includeBaseReferences: includeBaseReferences, + new OptionsProvider(returnReportPath: setReportPath), + includeBaseReferences: true, cancellationToken: cancellationToken).ConfigureAwait(false); return d; } - private sealed class Options : AnalyzerConfigOptions + private sealed class Options(bool returnReportPath) : AnalyzerConfigOptions { public override bool TryGetValue(string key, out string value) { @@ -117,7 +106,13 @@ public override bool TryGetValue(string key, out string value) return true; } - if (key == "build_property.MetricsReportOutputPath") + if (returnReportPath && key == "build_property.MetricsReportOutputPath") + { + value = Directory.GetCurrentDirectory(); + return true; + } + + if (key == "build_property.outputpath") { value = Directory.GetCurrentDirectory(); return true; @@ -128,9 +123,9 @@ public override bool TryGetValue(string key, out string value) } } - private sealed class OptionsProvider : AnalyzerConfigOptionsProvider + private sealed class OptionsProvider(bool returnReportPath) : AnalyzerConfigOptionsProvider { - public override AnalyzerConfigOptions GlobalOptions => new Options(); + public override AnalyzerConfigOptions GlobalOptions => new Options(returnReportPath); public override AnalyzerConfigOptions GetOptions(SyntaxTree tree) => throw new NotSupportedException(); public override AnalyzerConfigOptions GetOptions(AdditionalText textFile) => throw new NotSupportedException(); From 23c9331855de02f617300a6100f2e3aee42f0e10 Mon Sep 17 00:00:00 2001 From: Nikita Balabaev Date: Mon, 19 Feb 2024 15:12:42 +0100 Subject: [PATCH 4/9] CR --- docs/list-of-diagnostics.md | 8 +++++++- .../ComplianceReportsGenerator.cs | 20 +++++++++++++++---- .../MetricsReportsGenerator.cs | 14 +++++++------ src/Shared/DiagnosticIds/DiagnosticIds.cs | 4 ++-- 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md index 47778c3774c..f540a808699 100644 --- a/docs/list-of-diagnostics.md +++ b/docs/list-of-diagnostics.md @@ -41,7 +41,6 @@ if desired. | `EXTEXP0016` | Hosting integration testing experiments | | `EXTEXP0017` | Contextual options experiments | - # LoggerMessage | Diagnostic ID | Description | @@ -108,3 +107,10 @@ if desired. | `METGEN017` | Gauge is not supported yet | | `METGEN018` | Xml comment was not parsed correctly | | `METGEN019` | A metric class has cycles in its type hierarchy | + +## AuditReports + +| Diagnostic ID | Description | +| :---------------- | :---------- | +| `AUDREPGEN000` | MetricsReports generator couldn't resolve output path for the report | +| `AUDREPGEN001` | ComplianceReports generator couldn't resolve output path for the report | diff --git a/src/Generators/Microsoft.Gen.ComplianceReports/ComplianceReportsGenerator.cs b/src/Generators/Microsoft.Gen.ComplianceReports/ComplianceReportsGenerator.cs index 63f63aeab2d..7c6bffb9a95 100644 --- a/src/Generators/Microsoft.Gen.ComplianceReports/ComplianceReportsGenerator.cs +++ b/src/Generators/Microsoft.Gen.ComplianceReports/ComplianceReportsGenerator.cs @@ -1,9 +1,11 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Globalization; using System.IO; using Microsoft.CodeAnalysis; using Microsoft.Gen.Shared; +using Microsoft.Shared.DiagnosticIds; namespace Microsoft.Gen.ComplianceReports; @@ -55,7 +57,7 @@ public void Execute(GeneratorExecutionContext context) if (!GeneratorUtilities.ShouldGenerateReport(context, GenerateComplianceReportsMSBuildProperty)) { - // By default, compliance reports are only generated only during build time and not during design time to prevent the file being written on every keystroke in VS. + // By default, compliance reports are generated only during build time and not during design time to prevent the file being written on every keystroke in VS. return; } @@ -80,10 +82,20 @@ public void Execute(GeneratorExecutionContext context) if (_directory == null) { - _ = context.AnalyzerConfigOptions.GlobalOptions.TryGetValue(ComplianceReportOutputPathMSBuildProperty, out _directory); - if (string.IsNullOrWhiteSpace(_directory)) + if (!context.AnalyzerConfigOptions.GlobalOptions.TryGetValue(ComplianceReportOutputPathMSBuildProperty, out _directory) || + string.IsNullOrWhiteSpace(_directory)) { - // no valid output path + // Report diagnostic: + var diagnostic = new DiagnosticDescriptor( + DiagnosticIds.AuditReports.AUDREPGEN001, + "ComplianceReports generator couldn't resolve output path for the report. It won't be generated.", + "MSBuild property is missing or not set. The report won't be generated.", + nameof(DiagnosticIds.AuditReports), + DiagnosticSeverity.Info, + isEnabledByDefault: true, + helpLinkUri: string.Format(CultureInfo.InvariantCulture, DiagnosticIds.UrlFormat, DiagnosticIds.AuditReports.AUDREPGEN001)); + + context.ReportDiagnostic(Diagnostic.Create(diagnostic, location: null)); return; } } diff --git a/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs b/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs index f05f0489e5e..07422ebc31d 100644 --- a/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs +++ b/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Linq; using System.Text; @@ -58,12 +59,13 @@ public void Execute(GeneratorExecutionContext context) { // Report diagnostic: var diagnostic = new DiagnosticDescriptor( - DiagnosticIds.AuditReports.AUDREP000, - "Metrics report won't be generated.", - "Both and are missing or not set. The report won't be generated.", - "MetricsReports", + DiagnosticIds.AuditReports.AUDREPGEN000, + "MetricsReports generator couldn't resolve output path for the report. It won't be generated.", + "Both and MSBuild properties are not set. The report won't be generated.", + nameof(DiagnosticIds.AuditReports), DiagnosticSeverity.Info, - isEnabledByDefault: true); + isEnabledByDefault: true, + helpLinkUri: string.Format(CultureInfo.InvariantCulture, DiagnosticIds.UrlFormat, DiagnosticIds.AuditReports.AUDREPGEN000)); context.ReportDiagnostic(Diagnostic.Create(diagnostic, location: null)); @@ -108,7 +110,7 @@ private static string GetDefaultReportOutputPath(AnalyzerConfigOptions options) return string.Empty; } - // is absolute - return it right away: + // If is absolute - return it right away: if (Path.IsPathRooted(compilationOutputPath)) { return compilationOutputPath!; diff --git a/src/Shared/DiagnosticIds/DiagnosticIds.cs b/src/Shared/DiagnosticIds/DiagnosticIds.cs index 6903887daed..343093e6f44 100644 --- a/src/Shared/DiagnosticIds/DiagnosticIds.cs +++ b/src/Shared/DiagnosticIds/DiagnosticIds.cs @@ -114,8 +114,8 @@ internal static class Metrics internal static class AuditReports { - internal const string AUDREP000 = nameof(AUDREP000); - internal const string AUDREP001 = nameof(AUDREP001); + internal const string AUDREPGEN000 = nameof(AUDREPGEN000); + internal const string AUDREPGEN001 = nameof(AUDREPGEN001); } } From 09ae5fae0a98ff8fb7c6b83542ddc4a68f92902f Mon Sep 17 00:00:00 2001 From: Nikita Balabaev Date: Thu, 29 Feb 2024 17:36:25 +0100 Subject: [PATCH 5/9] improve tests --- global.json | 4 +- .../Unit/GeneratorTests.cs | 118 +++++++++++++----- 2 files changed, 90 insertions(+), 32 deletions(-) diff --git a/global.json b/global.json index af41c30bd37..eb861d9f906 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,9 @@ { "sdk": { - "version": "8.0.101" + "version": "8.0.200" }, "tools": { - "dotnet": "8.0.101", + "dotnet": "8.0.200", "runtimes": { "dotnet/x64": [ "6.0.22" diff --git a/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs b/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs index 36b36d5b515..40cc370608f 100644 --- a/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs +++ b/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Diagnostics.Metrics; using System.IO; +using System.Linq; using System.Reflection; using System.Threading; using System.Threading.Tasks; @@ -19,10 +20,12 @@ namespace Microsoft.Gen.MetricsReports.Test; public class GeneratorTests(ITestOutputHelper output) { + private const string ReportFilename = "MetricsReport.json"; + [Fact] public void GeneratorShouldNotDoAnythingIfGeneralExecutionContextDoesNotHaveClassDeclarationSyntaxReceiver() { - var defaultGeneralExecutionContext = default(GeneratorExecutionContext); + GeneratorExecutionContext defaultGeneralExecutionContext = default; new MetricsReportsGenerator().Execute(defaultGeneralExecutionContext); Assert.Null(defaultGeneralExecutionContext.SyntaxReceiver); @@ -37,11 +40,15 @@ public async Task TestAll(bool useExplicitReportPath) var stem = Path.GetFileNameWithoutExtension(inputFile); var goldenReportPath = Path.Combine("GoldenReports", Path.ChangeExtension(stem, ".json")); - var generatedReportPath = Path.Combine(Directory.GetCurrentDirectory(), "MetricsReport.json"); + var generatedReportPath = Path.Combine(Directory.GetCurrentDirectory(), ReportFilename); + + Dictionary? options = useExplicitReportPath + ? new() { ["build_property.MetricsReportOutputPath"] = Directory.GetCurrentDirectory() } + : null; if (File.Exists(goldenReportPath)) { - var d = await RunGenerator(await File.ReadAllTextAsync(inputFile), useExplicitReportPath); + var d = await RunGenerator(await File.ReadAllTextAsync(inputFile), options); Assert.Empty(d); var golden = await File.ReadAllTextAsync(goldenReportPath); @@ -66,15 +73,78 @@ public async Task TestAll(bool useExplicitReportPath) { // generate the golden file if it doesn't already exist output.WriteLine($"Generating golden report: {goldenReportPath}"); - _ = await RunGenerator(await File.ReadAllTextAsync(inputFile), useExplicitReportPath); + _ = await RunGenerator(await File.ReadAllTextAsync(inputFile), options); File.Copy(generatedReportPath, goldenReportPath); } } } + [Fact] + public async Task ShouldNot_Generate_WhenDisabledViaConfig() + { + var inputFile = Directory.GetFiles("TestClasses").First(); + var options = new Dictionary + { + ["build_property.GenerateMetricsReport"] = bool.FalseString, + ["build_property.MetricsReportOutputPath"] = Path.GetTempPath() + }; + + var d = await RunGenerator(await File.ReadAllTextAsync(inputFile), options); + Assert.Empty(d); + Assert.False(File.Exists(Path.Combine(Path.GetTempPath(), ReportFilename))); + } + + [Theory] + [CombinatorialData] + public async Task Should_EmitWarning_WhenPathUnavailable(bool isReportPathProvided) + { + var inputFile = Directory.GetFiles("TestClasses").First(); + var options = new Dictionary + { + ["build_property.outputpath"] = string.Empty + }; + + if (isReportPathProvided) + { + options.Add("build_property.MetricsReportOutputPath", string.Empty); + } + + var diags = await RunGenerator(await File.ReadAllTextAsync(inputFile), options); + var diag = Assert.Single(diags); + Assert.Equal("AUDREPGEN000", diag.Id); + Assert.Equal(DiagnosticSeverity.Info, diag.Severity); + } + + [Fact] + public async Task Should_UseProjectDir_WhenOutputPathIsRelative() + { + var projectDir = Path.GetTempPath(); + var outputPath = Guid.NewGuid().ToString(); + var fullReportPath = Path.Combine(projectDir, outputPath); + Directory.CreateDirectory(fullReportPath); + + try + { + var inputFile = Directory.GetFiles("TestClasses").First(); + var options = new Dictionary + { + ["build_property.projectdir"] = projectDir, + ["build_property.outputpath"] = outputPath + }; + + var diags = await RunGenerator(await File.ReadAllTextAsync(inputFile), options); + Assert.Empty(diags); + Assert.True(File.Exists(Path.Combine(fullReportPath, ReportFilename))); + } + finally + { + Directory.Delete(fullReportPath, recursive: true); + } + } + private static async Task> RunGenerator( string code, - bool setReportPath, + Dictionary? analyzerOptions = null, CancellationToken cancellationToken = default) { Assembly[] refs = @@ -89,43 +159,31 @@ private static async Task> RunGenerator( new MetricsReportsGenerator(), refs, new[] { code }, - new OptionsProvider(returnReportPath: setReportPath), + new OptionsProvider(analyzerOptions), includeBaseReferences: true, cancellationToken: cancellationToken).ConfigureAwait(false); return d; } - private sealed class Options(bool returnReportPath) : AnalyzerConfigOptions + private sealed class Options : AnalyzerConfigOptions { - public override bool TryGetValue(string key, out string value) - { - if (key == "build_property.GenerateMetricsReport") - { - value = bool.TrueString; - return true; - } - - if (returnReportPath && key == "build_property.MetricsReportOutputPath") - { - value = Directory.GetCurrentDirectory(); - return true; - } - - if (key == "build_property.outputpath") - { - value = Directory.GetCurrentDirectory(); - return true; - } + private readonly Dictionary _options; - value = null!; - return false; + public Options(Dictionary? analyzerOptions) + { + _options = analyzerOptions ?? []; + _options.TryAdd("build_property.GenerateMetricsReport", bool.TrueString); + _options.TryAdd("build_property.outputpath", Directory.GetCurrentDirectory()); } + + public override bool TryGetValue(string key, out string value) + => _options.TryGetValue(key, out value!); } - private sealed class OptionsProvider(bool returnReportPath) : AnalyzerConfigOptionsProvider + private sealed class OptionsProvider(Dictionary? analyzerOptions) : AnalyzerConfigOptionsProvider { - public override AnalyzerConfigOptions GlobalOptions => new Options(returnReportPath); + public override AnalyzerConfigOptions GlobalOptions => new Options(analyzerOptions); public override AnalyzerConfigOptions GetOptions(SyntaxTree tree) => throw new NotSupportedException(); public override AnalyzerConfigOptions GetOptions(AdditionalText textFile) => throw new NotSupportedException(); From a7d672548135c27f48b4fbde475b3294fea05b33 Mon Sep 17 00:00:00 2001 From: Nikita Balabaev Date: Thu, 29 Feb 2024 18:11:31 +0100 Subject: [PATCH 6/9] fix golden reports --- .../MeterAttributedWithXmlDescriptions.json | 31 + ...ensionsAttributedWithXmlDescriptions.json} | 4 +- ...oft.Extensions.Telemetry.Abstractions.json | 885 ----- ...ringReports.Roslyn3.8.Unit.Tests.deps.json | 2870 ----------------- ...ts.Roslyn3.8.Unit.Tests.runtimeconfig.json | 12 - .../GoldenReports/xunit.runner.json | 4 - ...DimensionsAttributedWithXmlDescriptions.cs | 24 +- ...osoft.Gen.MetricsReports.Unit.Tests.csproj | 4 +- 8 files changed, 47 insertions(+), 3787 deletions(-) create mode 100644 test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeterAttributedWithXmlDescriptions.json rename test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/{MeteringReport.json => MeterDimensionsAttributedWithXmlDescriptions.json} (93%) delete mode 100644 test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/Microsoft.Extensions.Telemetry.Abstractions.json delete mode 100644 test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/Microsoft.Gen.MeteringReports.Roslyn3.8.Unit.Tests.deps.json delete mode 100644 test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/Microsoft.Gen.MeteringReports.Roslyn3.8.Unit.Tests.runtimeconfig.json delete mode 100644 test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/xunit.runner.json diff --git a/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeterAttributedWithXmlDescriptions.json b/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeterAttributedWithXmlDescriptions.json new file mode 100644 index 00000000000..fc05721109c --- /dev/null +++ b/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeterAttributedWithXmlDescriptions.json @@ -0,0 +1,31 @@ +[ + { + "TestClasses": + [ + { + "MetricName": "CounterWithDescription", + "MetricDescription": "CounterWithDescription description.", + "InstrumentName": "Counter" + }, + { + "MetricName": "HistogramWithDescription", + "MetricDescription": "HistogramWithDescription description.", + "InstrumentName": "Histogram" + }, + { + "MetricName": "HistogramWithWrongDescription", + "MetricDescription": "(Missing Summary)", + "InstrumentName": "Histogram" + }, + { + "MetricName": "ConstDescribedCounter", + "MetricDescription": "CreateConstDescribedCounter description.", + "InstrumentName": "Counter", + "Dimensions": { + "Dim4": "Dim4 description.", + "InClassDim": "InClassDim description." + } + } + ] + } +] \ No newline at end of file diff --git a/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeteringReport.json b/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeterDimensionsAttributedWithXmlDescriptions.json similarity index 93% rename from test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeteringReport.json rename to test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeterDimensionsAttributedWithXmlDescriptions.json index 540dd9cabcc..1e09012dfac 100644 --- a/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeteringReport.json +++ b/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeterDimensionsAttributedWithXmlDescriptions.json @@ -17,7 +17,7 @@ "InstrumentName": "Histogram", "Dimensions": { "Dimension2": "Dimension2 description.", - "DimenisonDefinedInMetricClass": "DimenisonDefinedInMetricClass description." + "DimensionDefinedInMetricClass": "DimensionDefinedInMetricClass description." } }, { @@ -36,4 +36,4 @@ } ] } -] \ No newline at end of file +] diff --git a/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/Microsoft.Extensions.Telemetry.Abstractions.json b/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/Microsoft.Extensions.Telemetry.Abstractions.json deleted file mode 100644 index 046247fa87e..00000000000 --- a/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/Microsoft.Extensions.Telemetry.Abstractions.json +++ /dev/null @@ -1,885 +0,0 @@ -{ - "Name": "Microsoft.Extensions.Telemetry.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", - "Types": [ - { - "Type": "readonly struct Microsoft.Extensions.Diagnostics.Latency.Checkpoint : System.IEquatable", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.Checkpoint.Checkpoint(string name, long elapsed, long frequency);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.Checkpoint.Checkpoint();", - "Stage": "Stable" - }, - { - "Member": "override bool Microsoft.Extensions.Diagnostics.Latency.Checkpoint.Equals(object? obj);", - "Stage": "Stable" - }, - { - "Member": "bool Microsoft.Extensions.Diagnostics.Latency.Checkpoint.Equals(Microsoft.Extensions.Diagnostics.Latency.Checkpoint other);", - "Stage": "Stable" - }, - { - "Member": "override int Microsoft.Extensions.Diagnostics.Latency.Checkpoint.GetHashCode();", - "Stage": "Stable" - }, - { - "Member": "static bool Microsoft.Extensions.Diagnostics.Latency.Checkpoint.operator ==(Microsoft.Extensions.Diagnostics.Latency.Checkpoint left, Microsoft.Extensions.Diagnostics.Latency.Checkpoint right);", - "Stage": "Stable" - }, - { - "Member": "static bool Microsoft.Extensions.Diagnostics.Latency.Checkpoint.operator !=(Microsoft.Extensions.Diagnostics.Latency.Checkpoint left, Microsoft.Extensions.Diagnostics.Latency.Checkpoint right);", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "long Microsoft.Extensions.Diagnostics.Latency.Checkpoint.Elapsed { get; }", - "Stage": "Stable" - }, - { - "Member": "long Microsoft.Extensions.Diagnostics.Latency.Checkpoint.Frequency { get; }", - "Stage": "Stable" - }, - { - "Member": "string Microsoft.Extensions.Diagnostics.Latency.Checkpoint.Name { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "readonly struct Microsoft.Extensions.Diagnostics.Latency.CheckpointToken", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.CheckpointToken.CheckpointToken(string name, int position);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.CheckpointToken.CheckpointToken();", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "string Microsoft.Extensions.Diagnostics.Latency.CheckpointToken.Name { get; }", - "Stage": "Stable" - }, - { - "Member": "int Microsoft.Extensions.Diagnostics.Latency.CheckpointToken.Position { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "sealed class Microsoft.Extensions.Telemetry.Metering.CounterAttribute : System.Attribute", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Telemetry.Metering.CounterAttribute.CounterAttribute(params string[] dimensions);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Telemetry.Metering.CounterAttribute.CounterAttribute(System.Type type);", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "string[]? Microsoft.Extensions.Telemetry.Metering.CounterAttribute.Dimensions { get; }", - "Stage": "Stable" - }, - { - "Member": "string? Microsoft.Extensions.Telemetry.Metering.CounterAttribute.Name { get; set; }", - "Stage": "Stable" - }, - { - "Member": "System.Type? Microsoft.Extensions.Telemetry.Metering.CounterAttribute.Type { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "sealed class Microsoft.Extensions.Telemetry.Metering.CounterAttribute : System.Attribute where T : struct", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Telemetry.Metering.CounterAttribute.CounterAttribute(params string[] dimensions);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Telemetry.Metering.CounterAttribute.CounterAttribute(System.Type type);", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "string[]? Microsoft.Extensions.Telemetry.Metering.CounterAttribute.Dimensions { get; }", - "Stage": "Stable" - }, - { - "Member": "string? Microsoft.Extensions.Telemetry.Metering.CounterAttribute.Name { get; set; }", - "Stage": "Stable" - }, - { - "Member": "System.Type? Microsoft.Extensions.Telemetry.Metering.CounterAttribute.Type { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "sealed class Microsoft.Extensions.Telemetry.Metering.DimensionAttribute : System.Attribute", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Telemetry.Metering.DimensionAttribute.DimensionAttribute(string name);", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "string Microsoft.Extensions.Telemetry.Metering.DimensionAttribute.Name { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "static class Microsoft.Extensions.Diagnostics.Enrichment.EnricherExtensions", - "Stage": "Stable", - "Methods": [ - { - "Member": "static Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Extensions.Diagnostics.Enrichment.EnricherExtensions.AddLogEnricher(this Microsoft.Extensions.DependencyInjection.IServiceCollection services);", - "Stage": "Stable" - }, - { - "Member": "static Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Extensions.Diagnostics.Enrichment.EnricherExtensions.AddLogEnricher(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, Microsoft.Extensions.Diagnostics.Enrichment.ILogEnricher enricher);", - "Stage": "Stable" - }, - { - "Member": "static Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Extensions.Diagnostics.Enrichment.EnricherExtensions.AddMetricEnricher(this Microsoft.Extensions.DependencyInjection.IServiceCollection services);", - "Stage": "Stable" - }, - { - "Member": "static Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Extensions.Diagnostics.Enrichment.EnricherExtensions.AddMetricEnricher(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, Microsoft.Extensions.Diagnostics.Enrichment.IMetricEnricher enricher);", - "Stage": "Stable" - } - ] - }, - { - "Type": "sealed class Microsoft.Extensions.Telemetry.Metering.GaugeAttribute : System.Attribute", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Telemetry.Metering.GaugeAttribute.GaugeAttribute(params string[] dimensions);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Telemetry.Metering.GaugeAttribute.GaugeAttribute(System.Type type);", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "string[]? Microsoft.Extensions.Telemetry.Metering.GaugeAttribute.Dimensions { get; }", - "Stage": "Stable" - }, - { - "Member": "string? Microsoft.Extensions.Telemetry.Metering.GaugeAttribute.Name { get; set; }", - "Stage": "Stable" - }, - { - "Member": "System.Type? Microsoft.Extensions.Telemetry.Metering.GaugeAttribute.Type { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "sealed class Microsoft.Extensions.Telemetry.Metering.HistogramAttribute : System.Attribute", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Telemetry.Metering.HistogramAttribute.HistogramAttribute(params string[] dimensions);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Telemetry.Metering.HistogramAttribute.HistogramAttribute(System.Type type);", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "string[]? Microsoft.Extensions.Telemetry.Metering.HistogramAttribute.Dimensions { get; }", - "Stage": "Stable" - }, - { - "Member": "string? Microsoft.Extensions.Telemetry.Metering.HistogramAttribute.Name { get; set; }", - "Stage": "Stable" - }, - { - "Member": "System.Type? Microsoft.Extensions.Telemetry.Metering.HistogramAttribute.Type { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "sealed class Microsoft.Extensions.Telemetry.Metering.HistogramAttribute : System.Attribute where T : struct", - "Stage": "Experimental", - "Methods": [ - { - "Member": "Microsoft.Extensions.Telemetry.Metering.HistogramAttribute.HistogramAttribute(params string[] dimensions);", - "Stage": "Experimental" - }, - { - "Member": "Microsoft.Extensions.Telemetry.Metering.HistogramAttribute.HistogramAttribute(System.Type type);", - "Stage": "Experimental" - } - ], - "Properties": [ - { - "Member": "string[]? Microsoft.Extensions.Telemetry.Metering.HistogramAttribute.Dimensions { get; }", - "Stage": "Experimental" - }, - { - "Member": "string? Microsoft.Extensions.Telemetry.Metering.HistogramAttribute.Name { get; set; }", - "Stage": "Experimental" - }, - { - "Member": "System.Type? Microsoft.Extensions.Telemetry.Metering.HistogramAttribute.Type { get; }", - "Stage": "Experimental" - } - ] - }, - { - "Type": "enum Microsoft.Extensions.Http.Diagnostics.HttpRouteParameterRedactionMode", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Http.Diagnostics.HttpRouteParameterRedactionMode.HttpRouteParameterRedactionMode();", - "Stage": "Stable" - } - ], - "Fields": [ - { - "Member": "const Microsoft.Extensions.Http.Diagnostics.HttpRouteParameterRedactionMode Microsoft.Extensions.Http.Diagnostics.HttpRouteParameterRedactionMode.Loose", - "Stage": "Stable", - "Value": "1" - }, - { - "Member": "const Microsoft.Extensions.Http.Diagnostics.HttpRouteParameterRedactionMode Microsoft.Extensions.Http.Diagnostics.HttpRouteParameterRedactionMode.None", - "Stage": "Stable", - "Value": "2" - }, - { - "Member": "const Microsoft.Extensions.Http.Diagnostics.HttpRouteParameterRedactionMode Microsoft.Extensions.Http.Diagnostics.HttpRouteParameterRedactionMode.Strict", - "Stage": "Stable", - "Value": "0" - } - ] - }, - { - "Type": "interface Microsoft.Extensions.Http.Diagnostics.IDownstreamDependencyMetadata", - "Stage": "Stable", - "Properties": [ - { - "Member": "string Microsoft.Extensions.Http.Diagnostics.IDownstreamDependencyMetadata.DependencyName { get; }", - "Stage": "Stable" - }, - { - "Member": "System.Collections.Generic.ISet Microsoft.Extensions.Http.Diagnostics.IDownstreamDependencyMetadata.RequestMetadata { get; }", - "Stage": "Stable" - }, - { - "Member": "System.Collections.Generic.ISet Microsoft.Extensions.Http.Diagnostics.IDownstreamDependencyMetadata.UniqueHostNameSuffixes { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "interface Microsoft.Extensions.Diagnostics.Enrichment.IEnrichmentPropertyBag", - "Stage": "Stable", - "Methods": [ - { - "Member": "void Microsoft.Extensions.Diagnostics.Enrichment.IEnrichmentPropertyBag.Add(string key, object value);", - "Stage": "Stable" - }, - { - "Member": "void Microsoft.Extensions.Diagnostics.Enrichment.IEnrichmentPropertyBag.Add(string key, string value);", - "Stage": "Stable" - }, - { - "Member": "void Microsoft.Extensions.Diagnostics.Enrichment.IEnrichmentPropertyBag.Add(System.ReadOnlySpan> properties);", - "Stage": "Stable" - }, - { - "Member": "void Microsoft.Extensions.Diagnostics.Enrichment.IEnrichmentPropertyBag.Add(System.ReadOnlySpan> properties);", - "Stage": "Stable" - } - ] - }, - { - "Type": "interface Microsoft.Extensions.Diagnostics.Latency.ILatencyContext : System.IDisposable", - "Stage": "Stable", - "Methods": [ - { - "Member": "void Microsoft.Extensions.Diagnostics.Latency.ILatencyContext.AddCheckpoint(Microsoft.Extensions.Diagnostics.Latency.CheckpointToken token);", - "Stage": "Stable" - }, - { - "Member": "void Microsoft.Extensions.Diagnostics.Latency.ILatencyContext.AddMeasure(Microsoft.Extensions.Diagnostics.Latency.MeasureToken token, long value);", - "Stage": "Stable" - }, - { - "Member": "void Microsoft.Extensions.Diagnostics.Latency.ILatencyContext.Freeze();", - "Stage": "Stable" - }, - { - "Member": "void Microsoft.Extensions.Diagnostics.Latency.ILatencyContext.RecordMeasure(Microsoft.Extensions.Diagnostics.Latency.MeasureToken token, long value);", - "Stage": "Stable" - }, - { - "Member": "void Microsoft.Extensions.Diagnostics.Latency.ILatencyContext.SetTag(Microsoft.Extensions.Diagnostics.Latency.TagToken token, string value);", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.LatencyData Microsoft.Extensions.Diagnostics.Latency.ILatencyContext.LatencyData { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "interface Microsoft.Extensions.Diagnostics.Latency.ILatencyContextProvider", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.ILatencyContext Microsoft.Extensions.Diagnostics.Latency.ILatencyContextProvider.CreateContext();", - "Stage": "Stable" - } - ] - }, - { - "Type": "interface Microsoft.Extensions.Diagnostics.Latency.ILatencyContextTokenIssuer", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.CheckpointToken Microsoft.Extensions.Diagnostics.Latency.ILatencyContextTokenIssuer.GetCheckpointToken(string name);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.MeasureToken Microsoft.Extensions.Diagnostics.Latency.ILatencyContextTokenIssuer.GetMeasureToken(string name);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.TagToken Microsoft.Extensions.Diagnostics.Latency.ILatencyContextTokenIssuer.GetTagToken(string name);", - "Stage": "Stable" - } - ] - }, - { - "Type": "interface Microsoft.Extensions.Diagnostics.Latency.ILatencyDataExporter", - "Stage": "Stable", - "Methods": [ - { - "Member": "System.Threading.Tasks.Task Microsoft.Extensions.Diagnostics.Latency.ILatencyDataExporter.ExportAsync(Microsoft.Extensions.Diagnostics.Latency.LatencyData data, System.Threading.CancellationToken cancellationToken);", - "Stage": "Stable" - } - ] - }, - { - "Type": "interface Microsoft.Extensions.Diagnostics.Enrichment.ILogEnricher", - "Stage": "Stable", - "Methods": [ - { - "Member": "void Microsoft.Extensions.Diagnostics.Enrichment.ILogEnricher.Enrich(Microsoft.Extensions.Diagnostics.Enrichment.IEnrichmentPropertyBag bag);", - "Stage": "Stable" - } - ] - }, - { - "Type": "interface Microsoft.Extensions.Logging.ITagCollector", - "Stage": "Stable", - "Methods": [ - { - "Member": "void Microsoft.Extensions.Logging.ITagCollector.Add(string propertyName, object? propertyValue);", - "Stage": "Stable" - } - ] - }, - { - "Type": "interface Microsoft.Extensions.Diagnostics.Enrichment.IMetricEnricher", - "Stage": "Stable", - "Methods": [ - { - "Member": "void Microsoft.Extensions.Diagnostics.Enrichment.IMetricEnricher.Enrich(Microsoft.Extensions.Diagnostics.Enrichment.IEnrichmentPropertyBag bag);", - "Stage": "Stable" - } - ] - }, - { - "Type": "interface Microsoft.Extensions.Http.Diagnostics.IOutgoingRequestContext", - "Stage": "Stable", - "Methods": [ - { - "Member": "void Microsoft.Extensions.Http.Diagnostics.IOutgoingRequestContext.SetRequestMetadata(Microsoft.Extensions.Http.Diagnostics.RequestMetadata metadata);", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "Microsoft.Extensions.Http.Diagnostics.RequestMetadata? Microsoft.Extensions.Http.Diagnostics.IOutgoingRequestContext.RequestMetadata { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "interface Microsoft.Extensions.Diagnostics.Enrichment.ITraceEnricher", - "Stage": "Stable", - "Methods": [ - { - "Member": "void Microsoft.Extensions.Diagnostics.Enrichment.ITraceEnricher.Enrich(System.Diagnostics.Activity activity);", - "Stage": "Stable" - }, - { - "Member": "void Microsoft.Extensions.Diagnostics.Enrichment.ITraceEnricher.EnrichOnActivityStart(System.Diagnostics.Activity activity);", - "Stage": "Stable" - } - ] - }, - { - "Type": "class Microsoft.Extensions.Diagnostics.Latency.LatencyContextRegistrationOptions", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.LatencyContextRegistrationOptions.LatencyContextRegistrationOptions();", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "System.Collections.Generic.IReadOnlyList Microsoft.Extensions.Diagnostics.Latency.LatencyContextRegistrationOptions.CheckpointNames { get; set; }", - "Stage": "Stable" - }, - { - "Member": "System.Collections.Generic.IReadOnlyList Microsoft.Extensions.Diagnostics.Latency.LatencyContextRegistrationOptions.MeasureNames { get; set; }", - "Stage": "Stable" - }, - { - "Member": "System.Collections.Generic.IReadOnlyList Microsoft.Extensions.Diagnostics.Latency.LatencyContextRegistrationOptions.TagNames { get; set; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "readonly struct Microsoft.Extensions.Diagnostics.Latency.LatencyData", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.LatencyData.LatencyData(System.ArraySegment tags, System.ArraySegment checkpoints, System.ArraySegment measures, long durationTimestamp, long durationTimestampFrequency);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.LatencyData.LatencyData();", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "System.ReadOnlySpan Microsoft.Extensions.Diagnostics.Latency.LatencyData.Checkpoints { get; }", - "Stage": "Stable" - }, - { - "Member": "long Microsoft.Extensions.Diagnostics.Latency.LatencyData.DurationTimestamp { get; }", - "Stage": "Stable" - }, - { - "Member": "long Microsoft.Extensions.Diagnostics.Latency.LatencyData.DurationTimestampFrequency { get; }", - "Stage": "Stable" - }, - { - "Member": "System.ReadOnlySpan Microsoft.Extensions.Diagnostics.Latency.LatencyData.Measures { get; }", - "Stage": "Stable" - }, - { - "Member": "System.ReadOnlySpan Microsoft.Extensions.Diagnostics.Latency.LatencyData.Tags { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "static class Microsoft.Extensions.Diagnostics.Latency.LatencyRegistryExtensions", - "Stage": "Stable", - "Methods": [ - { - "Member": "static Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Extensions.Diagnostics.Latency.LatencyRegistryExtensions.RegisterCheckpointNames(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, params string[] names);", - "Stage": "Stable" - }, - { - "Member": "static Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Extensions.Diagnostics.Latency.LatencyRegistryExtensions.RegisterMeasureNames(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, params string[] names);", - "Stage": "Stable" - }, - { - "Member": "static Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Extensions.Diagnostics.Latency.LatencyRegistryExtensions.RegisterTagNames(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, params string[] names);", - "Stage": "Stable" - } - ] - }, - { - "Type": "sealed class Microsoft.Extensions.Logging.LoggerMessageAttribute : System.Attribute", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Logging.LoggerMessageAttribute.LoggerMessageAttribute(int eventId, Microsoft.Extensions.Logging.LogLevel level, string message);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Logging.LoggerMessageAttribute.LoggerMessageAttribute(int eventId, Microsoft.Extensions.Logging.LogLevel level);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Logging.LoggerMessageAttribute.LoggerMessageAttribute(Microsoft.Extensions.Logging.LogLevel level, string message);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Logging.LoggerMessageAttribute.LoggerMessageAttribute(Microsoft.Extensions.Logging.LogLevel level);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Logging.LoggerMessageAttribute.LoggerMessageAttribute(string message);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Logging.LoggerMessageAttribute.LoggerMessageAttribute(int eventId, string message);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Logging.LoggerMessageAttribute.LoggerMessageAttribute(int eventId);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Logging.LoggerMessageAttribute.LoggerMessageAttribute();", - "Stage": "Experimental" - } - ], - "Properties": [ - { - "Member": "int Microsoft.Extensions.Logging.LoggerMessageAttribute.EventId { get; }", - "Stage": "Stable" - }, - { - "Member": "string? Microsoft.Extensions.Logging.LoggerMessageAttribute.EventName { get; set; }", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Logging.LogLevel? Microsoft.Extensions.Logging.LoggerMessageAttribute.Level { get; }", - "Stage": "Stable" - }, - { - "Member": "string Microsoft.Extensions.Logging.LoggerMessageAttribute.Message { get; }", - "Stage": "Stable" - }, - { - "Member": "bool Microsoft.Extensions.Logging.LoggerMessageAttribute.SkipEnabledCheck { get; set; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "sealed class Microsoft.Extensions.Logging.LogMethodHelper : System.Collections.Generic.List>, Microsoft.Extensions.Logging.ITagCollector, Microsoft.Extensions.Diagnostics.Enrichment.IEnrichmentPropertyBag, Microsoft.Extensions.ObjectPool.IResettable", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Logging.LogMethodHelper.LogMethodHelper();", - "Stage": "Stable" - }, - { - "Member": "void Microsoft.Extensions.Logging.LogMethodHelper.Add(string propertyName, object? propertyValue);", - "Stage": "Stable" - }, - { - "Member": "static Microsoft.Extensions.Logging.LogMethodHelper Microsoft.Extensions.Logging.LogMethodHelper.GetHelper();", - "Stage": "Stable" - }, - { - "Member": "static void Microsoft.Extensions.Logging.LogMethodHelper.ReturnHelper(Microsoft.Extensions.Logging.LogMethodHelper helper);", - "Stage": "Stable" - }, - { - "Member": "static string Microsoft.Extensions.Logging.LogMethodHelper.Stringify(System.Collections.IEnumerable? enumerable);", - "Stage": "Stable" - }, - { - "Member": "static string Microsoft.Extensions.Logging.LogMethodHelper.Stringify(System.Collections.Generic.IEnumerable>? enumerable);", - "Stage": "Stable" - }, - { - "Member": "bool Microsoft.Extensions.Logging.LogMethodHelper.TryReset();", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "string Microsoft.Extensions.Logging.LogMethodHelper.ParameterName { get; set; }", - "Stage": "Stable" - }, - { - "Member": "static Microsoft.Extensions.Logging.LogDefineOptions Microsoft.Extensions.Logging.LogMethodHelper.SkipEnabledCheckOptions { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "sealed class Microsoft.Extensions.Logging.LogPropertiesAttribute : System.Attribute", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Logging.LogPropertiesAttribute.LogPropertiesAttribute();", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Logging.LogPropertiesAttribute.LogPropertiesAttribute(System.Type providerType, string providerMethod);", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "bool Microsoft.Extensions.Logging.LogPropertiesAttribute.OmitParameterName { get; set; }", - "Stage": "Stable" - }, - { - "Member": "string? Microsoft.Extensions.Logging.LogPropertiesAttribute.ProviderMethod { get; }", - "Stage": "Stable" - }, - { - "Member": "System.Type? Microsoft.Extensions.Logging.LogPropertiesAttribute.ProviderType { get; }", - "Stage": "Stable" - }, - { - "Member": "bool Microsoft.Extensions.Logging.LogPropertiesAttribute.SkipNullProperties { get; set; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "sealed class Microsoft.Extensions.Logging.LogPropertyIgnoreAttribute : System.Attribute", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Logging.LogPropertyIgnoreAttribute.LogPropertyIgnoreAttribute();", - "Stage": "Stable" - } - ] - }, - { - "Type": "readonly struct Microsoft.Extensions.Diagnostics.Latency.Measure : System.IEquatable", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.Measure.Measure(string name, long value);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.Measure.Measure();", - "Stage": "Stable" - }, - { - "Member": "override bool Microsoft.Extensions.Diagnostics.Latency.Measure.Equals(object? obj);", - "Stage": "Stable" - }, - { - "Member": "bool Microsoft.Extensions.Diagnostics.Latency.Measure.Equals(Microsoft.Extensions.Diagnostics.Latency.Measure other);", - "Stage": "Stable" - }, - { - "Member": "override int Microsoft.Extensions.Diagnostics.Latency.Measure.GetHashCode();", - "Stage": "Stable" - }, - { - "Member": "static bool Microsoft.Extensions.Diagnostics.Latency.Measure.operator ==(Microsoft.Extensions.Diagnostics.Latency.Measure left, Microsoft.Extensions.Diagnostics.Latency.Measure right);", - "Stage": "Stable" - }, - { - "Member": "static bool Microsoft.Extensions.Diagnostics.Latency.Measure.operator !=(Microsoft.Extensions.Diagnostics.Latency.Measure left, Microsoft.Extensions.Diagnostics.Latency.Measure right);", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "string Microsoft.Extensions.Diagnostics.Latency.Measure.Name { get; }", - "Stage": "Stable" - }, - { - "Member": "long Microsoft.Extensions.Diagnostics.Latency.Measure.Value { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "readonly struct Microsoft.Extensions.Diagnostics.Latency.MeasureToken", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.MeasureToken.MeasureToken(string name, int position);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.MeasureToken.MeasureToken();", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "string Microsoft.Extensions.Diagnostics.Latency.MeasureToken.Name { get; }", - "Stage": "Stable" - }, - { - "Member": "int Microsoft.Extensions.Diagnostics.Latency.MeasureToken.Position { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "class Microsoft.Extensions.Telemetry.Metering.Meter : System.Diagnostics.Metrics.Meter", - "Stage": "Experimental", - "Methods": [ - { - "Member": "Microsoft.Extensions.Telemetry.Metering.Meter.Meter();", - "Stage": "Experimental" - } - ] - }, - { - "Type": "static class Microsoft.Extensions.Telemetry.Metering.MeteringExtensions", - "Stage": "Stable", - "Methods": [ - { - "Member": "static Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Extensions.Telemetry.Metering.MeteringExtensions.RegisterMetering(this Microsoft.Extensions.DependencyInjection.IServiceCollection services);", - "Stage": "Experimental" - } - ] - }, - { - "Type": "static class Microsoft.Extensions.Diagnostics.Latency.NullLatencyContextExtensions", - "Stage": "Stable", - "Methods": [ - { - "Member": "static Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Extensions.Diagnostics.Latency.NullLatencyContextExtensions.AddNullLatencyContext(this Microsoft.Extensions.DependencyInjection.IServiceCollection services);", - "Stage": "Stable" - } - ] - }, - { - "Type": "class Microsoft.Extensions.Http.Diagnostics.RequestMetadata", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Http.Diagnostics.RequestMetadata.RequestMetadata();", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Http.Diagnostics.RequestMetadata.RequestMetadata(string methodType, string requestRoute, string requestName = \"unknown\");", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "string Microsoft.Extensions.Http.Diagnostics.RequestMetadata.DependencyName { get; set; }", - "Stage": "Stable" - }, - { - "Member": "string Microsoft.Extensions.Http.Diagnostics.RequestMetadata.MethodType { get; set; }", - "Stage": "Stable" - }, - { - "Member": "string Microsoft.Extensions.Http.Diagnostics.RequestMetadata.RequestName { get; set; }", - "Stage": "Stable" - }, - { - "Member": "string Microsoft.Extensions.Http.Diagnostics.RequestMetadata.RequestRoute { get; set; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "readonly struct Microsoft.Extensions.Diagnostics.Latency.Tag", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.Tag.Tag(string name, string value);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.Tag.Tag();", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "string Microsoft.Extensions.Diagnostics.Latency.Tag.Name { get; }", - "Stage": "Stable" - }, - { - "Member": "string Microsoft.Extensions.Diagnostics.Latency.Tag.Value { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "readonly struct Microsoft.Extensions.Diagnostics.Latency.TagToken", - "Stage": "Stable", - "Methods": [ - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.TagToken.TagToken(string name, int position);", - "Stage": "Stable" - }, - { - "Member": "Microsoft.Extensions.Diagnostics.Latency.TagToken.TagToken();", - "Stage": "Stable" - } - ], - "Properties": [ - { - "Member": "string Microsoft.Extensions.Diagnostics.Latency.TagToken.Name { get; }", - "Stage": "Stable" - }, - { - "Member": "int Microsoft.Extensions.Diagnostics.Latency.TagToken.Position { get; }", - "Stage": "Stable" - } - ] - }, - { - "Type": "static class Microsoft.Extensions.Http.Diagnostics.TelemetryConstants", - "Stage": "Stable", - "Fields": [ - { - "Member": "const string Microsoft.Extensions.Http.Diagnostics.TelemetryConstants.ClientApplicationNameHeader", - "Stage": "Experimental", - "Value": "X-ClientApplication" - }, - { - "Member": "const string Microsoft.Extensions.Http.Diagnostics.TelemetryConstants.Redacted", - "Stage": "Stable", - "Value": "REDACTED" - }, - { - "Member": "const string Microsoft.Extensions.Http.Diagnostics.TelemetryConstants.RequestMetadataKey", - "Stage": "Stable", - "Value": "Extensions-RequestMetadata" - }, - { - "Member": "const string Microsoft.Extensions.Http.Diagnostics.TelemetryConstants.ServerApplicationNameHeader", - "Stage": "Experimental", - "Value": "X-ServerApplication" - }, - { - "Member": "const string Microsoft.Extensions.Http.Diagnostics.TelemetryConstants.Unknown", - "Stage": "Stable", - "Value": "unknown" - } - ] - } - ] -} \ No newline at end of file diff --git a/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/Microsoft.Gen.MeteringReports.Roslyn3.8.Unit.Tests.deps.json b/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/Microsoft.Gen.MeteringReports.Roslyn3.8.Unit.Tests.deps.json deleted file mode 100644 index 3a0ebf498ab..00000000000 --- a/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/Microsoft.Gen.MeteringReports.Roslyn3.8.Unit.Tests.deps.json +++ /dev/null @@ -1,2870 +0,0 @@ -{ - "runtimeTarget": { - "name": ".NETCoreApp,Version=v8.0", - "signature": "" - }, - "compilationOptions": {}, - "targets": { - ".NETCoreApp,Version=v8.0": { - "Microsoft.Gen.MeteringReports.Roslyn3.8.Unit.Tests/8.0.0-dev": { - "dependencies": { - "AutoFixture.AutoMoq": "4.17.0", - "FluentAssertions": "6.2.0", - "Microsoft.CodeAnalysis": "4.0.1", - "Microsoft.Extensions.Telemetry.Abstractions": "8.0.0-dev", - "Microsoft.Gen.MeteringReports": "8.0.0-dev", - "Microsoft.NET.Test.Sdk": "17.5.0", - "Microsoft.SourceLink.AzureRepos.Git": "8.0.0-beta.23252.2", - "Microsoft.SourceLink.GitHub": "8.0.0-beta.23252.2", - "Microsoft.TestUtilities": "8.0.0-dev", - "Microsoft.VisualStudio.Threading.Analyzers": "17.5.22", - "Moq": "4.16.1", - "Moq.AutoMock": "3.1.0", - "SonarAnalyzer.CSharp": "8.52.0.60960", - "StrongNamer": "0.2.5", - "StyleCop.Analyzers.Unstable": "1.2.0.435", - "Xunit.Combinatorial": "1.5.25", - "AutoFixture": "4.17.0", - "xunit.analyzers": "1.0.0", - "xunit.assert": "2.4.2", - "xunit.core": "2.4.2", - "xunit.runner.visualstudio": "2.4.3", - "Microsoft.Gen.MeteringReports.Reference": "8.0.0.0", - "Microsoft.TestUtilities.Reference": "8.0.0.0" - }, - "runtime": { - "Microsoft.Gen.MeteringReports.Roslyn3.8.Unit.Tests.dll": {} - } - }, - "AutoFixture/4.17.0": { - "dependencies": { - "Fare": "2.1.1", - "System.ComponentModel.Annotations": "4.3.0" - }, - "runtime": { - "lib/netstandard2.0/AutoFixture.dll": { - "assemblyVersion": "4.17.0.0", - "fileVersion": "4.17.0.636" - } - } - }, - "AutoFixture.AutoMoq/4.17.0": { - "dependencies": { - "AutoFixture": "4.17.0", - "Moq": "4.16.1" - }, - "runtime": { - "lib/netstandard2.0/AutoFixture.AutoMoq.dll": { - "assemblyVersion": "4.17.0.0", - "fileVersion": "4.17.0.636" - } - } - }, - "Castle.Core/4.4.0": { - "dependencies": { - "NETStandard.Library": "1.6.1", - "System.Collections.Specialized": "4.3.0", - "System.ComponentModel": "4.3.0", - "System.ComponentModel.TypeConverter": "4.3.0", - "System.Diagnostics.TraceSource": "4.3.0", - "System.Dynamic.Runtime": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.TypeExtensions": "4.3.0", - "System.Xml.XmlDocument": "4.3.0" - }, - "runtime": { - "lib/netstandard1.5/Castle.Core.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "4.4.0.0" - } - } - }, - "Fare/2.1.1": { - "dependencies": { - "NETStandard.Library": "1.6.1" - }, - "runtime": { - "lib/netstandard1.1/Fare.dll": { - "assemblyVersion": "2.1.0.0", - "fileVersion": "2.1.1.0" - } - } - }, - "FluentAssertions/6.2.0": { - "dependencies": { - "System.Configuration.ConfigurationManager": "4.4.0" - }, - "runtime": { - "lib/netcoreapp3.0/FluentAssertions.dll": { - "assemblyVersion": "6.2.0.0", - "fileVersion": "6.2.0.0" - } - } - }, - "Humanizer.Core/2.2.0": { - "dependencies": { - "NETStandard.Library": "1.6.1" - }, - "runtime": { - "lib/netstandard1.0/Humanizer.dll": { - "assemblyVersion": "2.2.0.0", - "fileVersion": "2.2.0.0" - } - } - }, - "Microsoft.Bcl.AsyncInterfaces/5.0.0": { - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { - "assemblyVersion": "5.0.0.0", - "fileVersion": "5.0.20.51904" - } - } - }, - "Microsoft.Build.Tasks.Git/8.0.0-beta.23252.2": {}, - "Microsoft.CodeAnalysis/4.0.1": { - "dependencies": { - "Microsoft.CodeAnalysis.CSharp.Workspaces": "4.0.1", - "Microsoft.CodeAnalysis.VisualBasic.Workspaces": "4.0.1" - } - }, - "Microsoft.CodeAnalysis.Analyzers/3.3.2": {}, - "Microsoft.CodeAnalysis.Common/4.0.1": { - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.2", - "System.Collections.Immutable": "5.0.0", - "System.Memory": "4.5.4", - "System.Reflection.Metadata": "5.0.0", - "System.Runtime.CompilerServices.Unsafe": "5.0.0", - "System.Text.Encoding.CodePages": "4.5.1", - "System.Threading.Tasks.Extensions": "4.5.4" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "4.0.121.55815" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.CodeAnalysis.CSharp/4.0.1": { - "dependencies": { - "Microsoft.CodeAnalysis.Common": "4.0.1" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "4.0.121.55815" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.CodeAnalysis.CSharp.Workspaces/4.0.1": { - "dependencies": { - "Humanizer.Core": "2.2.0", - "Microsoft.CodeAnalysis.CSharp": "4.0.1", - "Microsoft.CodeAnalysis.Common": "4.0.1", - "Microsoft.CodeAnalysis.Workspaces.Common": "4.0.1" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "4.0.121.55815" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.CodeAnalysis.VisualBasic/4.0.1": { - "dependencies": { - "Microsoft.CodeAnalysis.Common": "4.0.1" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "4.0.121.55815" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.VisualBasic.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.VisualBasic.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.VisualBasic.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.VisualBasic.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.VisualBasic.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.VisualBasic.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.VisualBasic.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.VisualBasic.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.VisualBasic.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.VisualBasic.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.VisualBasic.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.CodeAnalysis.VisualBasic.Workspaces/4.0.1": { - "dependencies": { - "Microsoft.CodeAnalysis.Common": "4.0.1", - "Microsoft.CodeAnalysis.VisualBasic": "4.0.1", - "Microsoft.CodeAnalysis.Workspaces.Common": "4.0.1" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "4.0.121.55815" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.CodeAnalysis.Workspaces.Common/4.0.1": { - "dependencies": { - "Humanizer.Core": "2.2.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", - "Microsoft.CodeAnalysis.Common": "4.0.1", - "System.Composition": "1.0.31", - "System.IO.Pipelines": "5.0.1" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "4.0.121.55815" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.CodeCoverage/17.5.0": { - "runtime": { - "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "17.500.222.62001" - } - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0-preview.5.23272.1": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.23.27201" - } - } - }, - "Microsoft.Extensions.Logging.Abstractions/8.0.0-preview.5.23272.1": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.23.27201" - } - } - }, - "Microsoft.Extensions.ObjectPool/8.0.0-preview.5.23273.2": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.ObjectPool.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.23.27302" - } - } - }, - "Microsoft.Extensions.Options/8.0.0-preview.5.23272.1": { - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0-preview.5.23272.1", - "Microsoft.Extensions.Primitives": "8.0.0-preview.5.23272.1" - }, - "runtime": { - "lib/net8.0/Microsoft.Extensions.Options.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.23.27201" - } - } - }, - "Microsoft.Extensions.Primitives/8.0.0-preview.5.23272.1": { - "runtime": { - "lib/net8.0/Microsoft.Extensions.Primitives.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.23.27201" - } - } - }, - "Microsoft.NET.Test.Sdk/17.5.0": { - "dependencies": { - "Microsoft.CodeCoverage": "17.5.0", - "Microsoft.TestPlatform.TestHost": "17.5.0" - } - }, - "Microsoft.NETCore.Platforms/2.1.2": {}, - "Microsoft.NETCore.Targets/1.1.0": {}, - "Microsoft.SourceLink.AzureRepos.Git/8.0.0-beta.23252.2": { - "dependencies": { - "Microsoft.Build.Tasks.Git": "8.0.0-beta.23252.2", - "Microsoft.SourceLink.Common": "8.0.0-beta.23252.2" - } - }, - "Microsoft.SourceLink.Common/8.0.0-beta.23252.2": {}, - "Microsoft.SourceLink.GitHub/8.0.0-beta.23252.2": { - "dependencies": { - "Microsoft.Build.Tasks.Git": "8.0.0-beta.23252.2", - "Microsoft.SourceLink.Common": "8.0.0-beta.23252.2" - } - }, - "Microsoft.TestPlatform.ObjectModel/17.5.0": { - "dependencies": { - "NuGet.Frameworks": "5.11.0", - "System.Reflection.Metadata": "5.0.0" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "15.0.0.0" - }, - "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "15.0.0.0" - }, - "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "15.0.0.0" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { - "locale": "zh-Hant" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.TestPlatform.TestHost/17.5.0": { - "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "17.5.0", - "Newtonsoft.Json": "13.0.1" - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "15.0.0.0" - }, - "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "15.0.0.0" - }, - "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "15.0.0.0" - }, - "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "15.0.0.0" - }, - "lib/netcoreapp3.1/testhost.dll": { - "assemblyVersion": "15.0.0.0", - "fileVersion": "15.0.0.0" - } - }, - "resources": { - "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "cs" - }, - "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "de" - }, - "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "es" - }, - "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "fr" - }, - "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "it" - }, - "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "ja" - }, - "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "ko" - }, - "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "pl" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "pt-BR" - }, - "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "ru" - }, - "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "tr" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "zh-Hans" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { - "locale": "zh-Hant" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { - "locale": "zh-Hant" - }, - "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { - "locale": "zh-Hant" - } - } - }, - "Microsoft.VisualStudio.Threading.Analyzers/17.5.22": {}, - "Microsoft.Win32.Primitives/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "Moq/4.16.1": { - "dependencies": { - "Castle.Core": "4.4.0", - "System.Threading.Tasks.Extensions": "4.5.4" - }, - "runtime": { - "lib/netstandard2.1/Moq.dll": { - "assemblyVersion": "4.16.0.0", - "fileVersion": "4.16.1.0" - } - } - }, - "Moq.AutoMock/3.1.0": { - "dependencies": { - "Moq": "4.16.1" - }, - "runtime": { - "lib/netstandard2.0/Moq.AutoMock.dll": { - "assemblyVersion": "3.1.0.0", - "fileVersion": "3.1.0.0" - } - } - }, - "NETStandard.Library/1.6.1": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.Win32.Primitives": "4.3.0", - "System.AppContext": "4.3.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Console": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.Compression.ZipFile": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.Net.Http": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Net.Sockets": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Timer": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XDocument": "4.3.0" - } - }, - "Newtonsoft.Json/13.0.1": { - "runtime": { - "lib/netstandard2.0/Newtonsoft.Json.dll": { - "assemblyVersion": "13.0.0.0", - "fileVersion": "13.0.1.25517" - } - } - }, - "NuGet.Frameworks/5.11.0": { - "runtime": { - "lib/netstandard2.0/NuGet.Frameworks.dll": { - "assemblyVersion": "5.11.0.10", - "fileVersion": "5.11.0.10" - } - } - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.native.System/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "runtime.native.System.IO.Compression/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "runtime.native.System.Net.Http/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "dependencies": { - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" - } - }, - "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "dependencies": { - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {}, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": {}, - "SonarAnalyzer.CSharp/8.52.0.60960": {}, - "StrongNamer/0.2.5": {}, - "StyleCop.Analyzers.Unstable/1.2.0.435": {}, - "System.AppContext/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Buffers/4.3.0": { - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Collections/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Collections.Concurrent/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Collections.Immutable/5.0.0": {}, - "System.Collections.NonGeneric/4.3.0": { - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Collections.Specialized/4.3.0": { - "dependencies": { - "System.Collections.NonGeneric": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.ComponentModel/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.ComponentModel.Annotations/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.ComponentModel": "4.3.0", - "System.Globalization": "4.3.0", - "System.Linq": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.ComponentModel.Primitives/4.3.0": { - "dependencies": { - "System.ComponentModel": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.ComponentModel.TypeConverter/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Collections.NonGeneric": "4.3.0", - "System.Collections.Specialized": "4.3.0", - "System.ComponentModel": "4.3.0", - "System.ComponentModel.Primitives": "4.3.0", - "System.Globalization": "4.3.0", - "System.Linq": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Composition/1.0.31": { - "dependencies": { - "System.Composition.AttributedModel": "1.0.31", - "System.Composition.Convention": "1.0.31", - "System.Composition.Hosting": "1.0.31", - "System.Composition.Runtime": "1.0.31", - "System.Composition.TypedParts": "1.0.31" - } - }, - "System.Composition.AttributedModel/1.0.31": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - }, - "runtime": { - "lib/netstandard1.0/System.Composition.AttributedModel.dll": { - "assemblyVersion": "1.0.31.0", - "fileVersion": "4.6.24705.1" - } - } - }, - "System.Composition.Convention/1.0.31": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Composition.AttributedModel": "1.0.31", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Globalization": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" - }, - "runtime": { - "lib/netstandard1.0/System.Composition.Convention.dll": { - "assemblyVersion": "1.0.31.0", - "fileVersion": "4.6.24705.1" - } - } - }, - "System.Composition.Hosting/1.0.31": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Composition.Runtime": "1.0.31", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Globalization": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" - }, - "runtime": { - "lib/netstandard1.0/System.Composition.Hosting.dll": { - "assemblyVersion": "1.0.31.0", - "fileVersion": "4.6.24705.1" - } - } - }, - "System.Composition.Runtime/1.0.31": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Globalization": "4.3.0", - "System.Linq": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0" - }, - "runtime": { - "lib/netstandard1.0/System.Composition.Runtime.dll": { - "assemblyVersion": "1.0.31.0", - "fileVersion": "4.6.24705.1" - } - } - }, - "System.Composition.TypedParts/1.0.31": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Composition.AttributedModel": "1.0.31", - "System.Composition.Hosting": "1.0.31", - "System.Composition.Runtime": "1.0.31", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Globalization": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - }, - "runtime": { - "lib/netstandard1.0/System.Composition.TypedParts.dll": { - "assemblyVersion": "1.0.31.0", - "fileVersion": "4.6.24705.1" - } - } - }, - "System.Configuration.ConfigurationManager/4.4.0": { - "dependencies": { - "System.Security.Cryptography.ProtectedData": "4.4.0" - }, - "runtime": { - "lib/netstandard2.0/System.Configuration.ConfigurationManager.dll": { - "assemblyVersion": "4.0.0.0", - "fileVersion": "4.6.25519.3" - } - } - }, - "System.Console/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Diagnostics.Debug/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Diagnostics.DiagnosticSource/8.0.0-preview.5.23272.1": { - "runtime": { - "lib/net8.0/System.Diagnostics.DiagnosticSource.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "8.0.23.27201" - } - } - }, - "System.Diagnostics.Tools/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Diagnostics.TraceSource/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Diagnostics.Tracing/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Dynamic.Runtime/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Globalization/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Globalization.Calendars/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Globalization.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0" - } - }, - "System.IO/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.IO.Compression/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "System.Buffers": "4.3.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.IO.Compression": "4.3.0" - } - }, - "System.IO.Compression.ZipFile/4.3.0": { - "dependencies": { - "System.Buffers": "4.3.0", - "System.IO": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.IO.FileSystem/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.IO.FileSystem.Primitives/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.IO.Pipelines/5.0.1": { - "runtime": { - "lib/netcoreapp3.0/System.IO.Pipelines.dll": { - "assemblyVersion": "5.0.0.1", - "fileVersion": "5.0.120.57516" - } - } - }, - "System.Linq/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - } - }, - "System.Linq.Expressions/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Linq": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Emit.Lightweight": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Reflection.TypeExtensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Memory/4.5.4": {}, - "System.Net.Http/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.DiagnosticSource": "8.0.0-preview.5.23272.1", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Extensions": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Net.Primitives/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Net.Sockets/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.ObjectModel/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Reflection/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit/4.3.0": { - "dependencies": { - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit.ILGeneration/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Emit.Lightweight/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Emit.ILGeneration": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.Metadata/5.0.0": {}, - "System.Reflection.Primitives/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Reflection.TypeExtensions/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Resources.ResourceManager/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0" - } - }, - "System.Runtime.CompilerServices.Unsafe/5.0.0": {}, - "System.Runtime.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.Handles/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.InteropServices/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Reflection": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - } - }, - "System.Runtime.Numerics/4.3.0": { - "dependencies": { - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - } - }, - "System.Security.Cryptography.Algorithms/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.Apple": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.Cng/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Security.Cryptography.Csp/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0" - } - }, - "System.Security.Cryptography.Encoding/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Linq": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.OpenSsl/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Security.Cryptography.Primitives/4.3.0": { - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Security.Cryptography.ProtectedData/4.4.0": { - "runtime": { - "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": { - "assemblyVersion": "4.0.2.0", - "fileVersion": "4.6.25519.3" - } - }, - "runtimeTargets": { - "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": { - "rid": "win", - "assetType": "runtime", - "assemblyVersion": "4.0.2.0", - "fileVersion": "4.6.25519.3" - } - } - }, - "System.Security.Cryptography.X509Certificates/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Cng": "4.3.0", - "System.Security.Cryptography.Csp": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - } - }, - "System.Text.Encoding/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Text.Encoding.CodePages/4.5.1": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "System.Runtime.CompilerServices.Unsafe": "5.0.0" - } - }, - "System.Text.Encoding.Extensions/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - } - }, - "System.Text.RegularExpressions/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Threading/4.3.0": { - "dependencies": { - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - } - }, - "System.Threading.Tasks/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Threading.Tasks.Extensions/4.5.4": {}, - "System.Threading.Timer/4.3.0": { - "dependencies": { - "Microsoft.NETCore.Platforms": "2.1.2", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - } - }, - "System.Xml.ReaderWriter/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Tasks.Extensions": "4.5.4" - } - }, - "System.Xml.XDocument/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - } - }, - "System.Xml.XmlDocument/4.3.0": { - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - } - }, - "xunit.abstractions/2.0.3": { - "runtime": { - "lib/netstandard2.0/xunit.abstractions.dll": { - "assemblyVersion": "2.0.0.0", - "fileVersion": "2.0.0.0" - } - } - }, - "xunit.analyzers/1.0.0": {}, - "xunit.assert/2.4.2": { - "dependencies": { - "NETStandard.Library": "1.6.1" - }, - "runtime": { - "lib/netstandard1.1/xunit.assert.dll": { - "assemblyVersion": "2.4.2.0", - "fileVersion": "2.4.2.0" - } - } - }, - "Xunit.Combinatorial/1.5.25": { - "dependencies": { - "xunit.extensibility.core": "2.4.2" - }, - "runtime": { - "lib/netstandard2.0/Xunit.Combinatorial.dll": { - "assemblyVersion": "1.5.0.0", - "fileVersion": "1.5.25.38407" - } - } - }, - "xunit.core/2.4.2": { - "dependencies": { - "xunit.extensibility.core": "2.4.2", - "xunit.extensibility.execution": "2.4.2" - } - }, - "xunit.extensibility.core/2.4.2": { - "dependencies": { - "NETStandard.Library": "1.6.1", - "xunit.abstractions": "2.0.3" - }, - "runtime": { - "lib/netstandard1.1/xunit.core.dll": { - "assemblyVersion": "2.4.2.0", - "fileVersion": "2.4.2.0" - } - } - }, - "xunit.extensibility.execution/2.4.2": { - "dependencies": { - "NETStandard.Library": "1.6.1", - "xunit.extensibility.core": "2.4.2" - }, - "runtime": { - "lib/netstandard1.1/xunit.execution.dotnet.dll": { - "assemblyVersion": "2.4.2.0", - "fileVersion": "2.4.2.0" - } - } - }, - "xunit.runner.visualstudio/2.4.3": {}, - "Microsoft.Extensions.Telemetry.Abstractions/8.0.0-dev": { - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "8.0.0-preview.5.23272.1", - "Microsoft.Extensions.ObjectPool": "8.0.0-preview.5.23273.2", - "Microsoft.Extensions.Options": "8.0.0-preview.5.23272.1", - "System.Diagnostics.DiagnosticSource": "8.0.0-preview.5.23272.1" - }, - "runtime": { - "Microsoft.Extensions.Telemetry.Abstractions.dll": {} - } - }, - "Microsoft.Gen.MeteringReports/8.0.0-dev": { - "dependencies": { - "Microsoft.CodeAnalysis": "4.0.1" - }, - "runtime": { - "Microsoft.Gen.MeteringReports.dll": {} - } - }, - "Microsoft.TestUtilities/8.0.0-dev": { - "dependencies": { - "AutoFixture.AutoMoq": "4.17.0", - "FluentAssertions": "6.2.0", - "Moq": "4.16.1", - "Moq.AutoMock": "3.1.0", - "StrongNamer": "0.2.5", - "Xunit.Combinatorial": "1.5.25", - "AutoFixture": "4.17.0", - "xunit.extensibility.execution": "2.4.2" - }, - "runtime": { - "Microsoft.TestUtilities.dll": {} - } - }, - "Microsoft.Gen.MeteringReports.Reference/8.0.0.0": { - "runtime": { - "Microsoft.Gen.MeteringReports.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "42.42.42.42424" - } - } - }, - "Microsoft.TestUtilities.Reference/8.0.0.0": { - "runtime": { - "Microsoft.TestUtilities.dll": { - "assemblyVersion": "8.0.0.0", - "fileVersion": "42.42.42.42424" - } - } - } - } - }, - "libraries": { - "Microsoft.Gen.MeteringReports.Roslyn3.8.Unit.Tests/8.0.0-dev": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "AutoFixture/4.17.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-efMRCG3Epc4QDELwdmQGf6/caQUleRXPRCnLAq5gLMpTuOTcOQWV12vEJ8qo678Rj97/TjjxHYu/34rGkXdVAA==", - "path": "autofixture/4.17.0", - "hashPath": "autofixture.4.17.0.nupkg.sha512" - }, - "AutoFixture.AutoMoq/4.17.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-i6xReNJM8+jjXk1LJ5UBPJMZjoOAr7mkgM1pkI40aZJ9Y2KZxRW528XmLoYzDmvIayDtvzkYd1Zns0dn7Kkr0g==", - "path": "autofixture.automoq/4.17.0", - "hashPath": "autofixture.automoq.4.17.0.nupkg.sha512" - }, - "Castle.Core/4.4.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-b5rRL5zeaau1y/5hIbI+6mGw3cwun16YjkHZnV9RRT5UyUIFsgLmNXJ0YnIN9p8Hw7K7AbG1q1UclQVU3DinAQ==", - "path": "castle.core/4.4.0", - "hashPath": "castle.core.4.4.0.nupkg.sha512" - }, - "Fare/2.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-HaI8puqA66YU7/9cK4Sgbs1taUTP1Ssa4QT2PIzqJ7GvAbN1QgkjbRsjH+FSbMh1MJdvS0CIwQNLtFT+KF6KpA==", - "path": "fare/2.1.1", - "hashPath": "fare.2.1.1.nupkg.sha512" - }, - "FluentAssertions/6.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5YOZLB0Tay1bw+wEYZTAZlPThQ/Yntk1HSPJYluMd5PW/Xg9E8I1mRC03AKRsnuANBR0kYaHq0NX1fg7RgrGNA==", - "path": "fluentassertions/6.2.0", - "hashPath": "fluentassertions.6.2.0.nupkg.sha512" - }, - "Humanizer.Core/2.2.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-rsYXB7+iUPP8AHgQ8JP2UZI2xK2KhjcdGr9E6zX3CsZaTLCaw8M35vaAJRo1rfxeaZEVMuXeaquLVCkZ7JcZ5Q==", - "path": "humanizer.core/2.2.0", - "hashPath": "humanizer.core.2.2.0.nupkg.sha512" - }, - "Microsoft.Bcl.AsyncInterfaces/5.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==", - "path": "microsoft.bcl.asyncinterfaces/5.0.0", - "hashPath": "microsoft.bcl.asyncinterfaces.5.0.0.nupkg.sha512" - }, - "Microsoft.Build.Tasks.Git/8.0.0-beta.23252.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-AmkuzGoK7EHF44CmZQ2ScZSKWsMd0c2FQBeThwedLOtYb6rbLJbuFPXwHaPw68BiaO7zHOKkMGDkiXxd9O0Rpg==", - "path": "microsoft.build.tasks.git/8.0.0-beta.23252.2", - "hashPath": "microsoft.build.tasks.git.8.0.0-beta.23252.2.nupkg.sha512" - }, - "Microsoft.CodeAnalysis/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-PIuWPA8RyLNJhsgPNsOsJPYmfKTrJOqe7+lp7KNvs4m2kFGHVvq2f8yfQ60uCbyRmLxWU4w49gNcKytjcIuBZw==", - "path": "microsoft.codeanalysis/4.0.1", - "hashPath": "microsoft.codeanalysis.4.0.1.nupkg.sha512" - }, - "Microsoft.CodeAnalysis.Analyzers/3.3.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7xt6zTlIEizUgEsYAIgm37EbdkiMmr6fP6J9pDoKEpiGM4pi32BCPGr/IczmSJI9Zzp0a6HOzpr9OvpMP+2veA==", - "path": "microsoft.codeanalysis.analyzers/3.3.2", - "hashPath": "microsoft.codeanalysis.analyzers.3.3.2.nupkg.sha512" - }, - "Microsoft.CodeAnalysis.Common/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-SMREwaVD5SzatlWhh9aahQAtSWdb63NcE//f+bQzgHSECU6xtDtaxk0kwV+asdFfr6HtW38UeO6jvqdfzudg3w==", - "path": "microsoft.codeanalysis.common/4.0.1", - "hashPath": "microsoft.codeanalysis.common.4.0.1.nupkg.sha512" - }, - "Microsoft.CodeAnalysis.CSharp/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Q9RxxydPpUElj/x1/qykDTUGsRoKbJG8H5XUSeMGmMu54fBiuX1xyanom9caa1oQfh5JIW1BgLxobSaWs4WyHQ==", - "path": "microsoft.codeanalysis.csharp/4.0.1", - "hashPath": "microsoft.codeanalysis.csharp.4.0.1.nupkg.sha512" - }, - "Microsoft.CodeAnalysis.CSharp.Workspaces/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-gcixGtpEjtoZV9SQcmSzf3OjHBACWUBKEEEjdIyn9E2gpd7dm+TiFFMrvJK6mW0VJp63z2MW6wBDiuaXDcFZdQ==", - "path": "microsoft.codeanalysis.csharp.workspaces/4.0.1", - "hashPath": "microsoft.codeanalysis.csharp.workspaces.4.0.1.nupkg.sha512" - }, - "Microsoft.CodeAnalysis.VisualBasic/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-o67w8S4zO7tQvB0EQeeo7i5uJCT/CrLwnLUWkkbxU2aUsZPGuRd35diuqk7e+vwnfhu27AvNJsr+1Z6EUT+fDA==", - "path": "microsoft.codeanalysis.visualbasic/4.0.1", - "hashPath": "microsoft.codeanalysis.visualbasic.4.0.1.nupkg.sha512" - }, - "Microsoft.CodeAnalysis.VisualBasic.Workspaces/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-h8Alrq7yPFHU8DLmCMbAcaKnFVsdu2bDy6IFTiw9UXDdWjGGre1/Uae+VcY/VIi/GkjmrLtRcTTHZZIyagMOWg==", - "path": "microsoft.codeanalysis.visualbasic.workspaces/4.0.1", - "hashPath": "microsoft.codeanalysis.visualbasic.workspaces.4.0.1.nupkg.sha512" - }, - "Microsoft.CodeAnalysis.Workspaces.Common/4.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-UfH5ZiUeXE3YIJAiJV1KTrs7uyJ4U3kqjLerYxwuugfaxedpI4lTevbXKSvns+FPL+hLTxKvldhANj8/uEYiRA==", - "path": "microsoft.codeanalysis.workspaces.common/4.0.1", - "hashPath": "microsoft.codeanalysis.workspaces.common.4.0.1.nupkg.sha512" - }, - "Microsoft.CodeCoverage/17.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6FQo0O6LKDqbCiIgVQhJAf810HSjFlOj7FunWaeOGDKxy8DAbpHzPk4SfBTXz9ytaaceuIIeR6hZgplt09m+ig==", - "path": "microsoft.codecoverage/17.5.0", - "hashPath": "microsoft.codecoverage.17.5.0.nupkg.sha512" - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.0-preview.5.23272.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-N3IghJGtLftmXLkEZE/pQGT+/roy3SD52vUvfPOJxlVqROlsZ7LsHjjWzAVEBCZPh32Njb8Cx3YtrZ9jQd0Row==", - "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.0-preview.5.23272.1", - "hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.0-preview.5.23272.1.nupkg.sha512" - }, - "Microsoft.Extensions.Logging.Abstractions/8.0.0-preview.5.23272.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-hTSwio6sUotYVDsoeoGu+8wpqk+oBYT98Tw8Nx3q/TUjQGNk4jtugVNmk0uGqI86T18mJG0+2+KP7Wehl/DP9g==", - "path": "microsoft.extensions.logging.abstractions/8.0.0-preview.5.23272.1", - "hashPath": "microsoft.extensions.logging.abstractions.8.0.0-preview.5.23272.1.nupkg.sha512" - }, - "Microsoft.Extensions.ObjectPool/8.0.0-preview.5.23273.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FUK7flkPH4VZAbuJiZh+TzchyJ3eBepZCiih+mSZE5jKlQUbe3nBkARpciKPsOh7WdkiqQi8gT5vEe40R3NQbQ==", - "path": "microsoft.extensions.objectpool/8.0.0-preview.5.23273.2", - "hashPath": "microsoft.extensions.objectpool.8.0.0-preview.5.23273.2.nupkg.sha512" - }, - "Microsoft.Extensions.Options/8.0.0-preview.5.23272.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ffM5AMRw1xl+QYjAdSSv2xF2t2bl9DpAD+GTAb8ejfsu1iHR3O2LLl8XXdz+v2F5QRqBde8E1N+xmMl88w/Beg==", - "path": "microsoft.extensions.options/8.0.0-preview.5.23272.1", - "hashPath": "microsoft.extensions.options.8.0.0-preview.5.23272.1.nupkg.sha512" - }, - "Microsoft.Extensions.Primitives/8.0.0-preview.5.23272.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MyhXgKLRd65RiREqK0W/DIO/AJYPrTccL/cBfB455O4DV9ehy6FbBMzrzhJV2RszDcDP+JYA1K3cHfmQHLEpoA==", - "path": "microsoft.extensions.primitives/8.0.0-preview.5.23272.1", - "hashPath": "microsoft.extensions.primitives.8.0.0-preview.5.23272.1.nupkg.sha512" - }, - "Microsoft.NET.Test.Sdk/17.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-IJ4eSPcsRbwbAZehh1M9KgejSy0u3d0wAdkJytfCh67zOaCl5U3ltruUEe15MqirdRqGmm/ngbjeaVeGapSZxg==", - "path": "microsoft.net.test.sdk/17.5.0", - "hashPath": "microsoft.net.test.sdk.17.5.0.nupkg.sha512" - }, - "Microsoft.NETCore.Platforms/2.1.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-mOJy3M0UN+LUG21dLGMxaWZEP6xYpQEpLuvuEQBaownaX4YuhH6NmNUlN9si+vNkAS6dwJ//N1O4DmLf2CikVg==", - "path": "microsoft.netcore.platforms/2.1.2", - "hashPath": "microsoft.netcore.platforms.2.1.2.nupkg.sha512" - }, - "Microsoft.NETCore.Targets/1.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", - "path": "microsoft.netcore.targets/1.1.0", - "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512" - }, - "Microsoft.SourceLink.AzureRepos.Git/8.0.0-beta.23252.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-+MyyxoSorb2TD5XzQ5ZW6o6XWjvedBSZgc+7AJNxWwIwAejy9ObGhcv22G9+n+nUjUHlVIkt3HXouQPHbm8kjQ==", - "path": "microsoft.sourcelink.azurerepos.git/8.0.0-beta.23252.2", - "hashPath": "microsoft.sourcelink.azurerepos.git.8.0.0-beta.23252.2.nupkg.sha512" - }, - "Microsoft.SourceLink.Common/8.0.0-beta.23252.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-E9nnMi6RRrMGzrcJDZ3U1PnunYwysTIH4AsEPJIFPLt0cHvVSMJLw6B3JeYZ1KjvLkCUmLiL5TiUfjC6F//I4A==", - "path": "microsoft.sourcelink.common/8.0.0-beta.23252.2", - "hashPath": "microsoft.sourcelink.common.8.0.0-beta.23252.2.nupkg.sha512" - }, - "Microsoft.SourceLink.GitHub/8.0.0-beta.23252.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-rjx+CRlfZeGl/2hbP+Ty1OQuEjWBll4TCUgVRY9pw4n/FMwNj0B+LYVobeH9vnvmmiPfAnHePVcZiCm/cIaRVw==", - "path": "microsoft.sourcelink.github/8.0.0-beta.23252.2", - "hashPath": "microsoft.sourcelink.github.8.0.0-beta.23252.2.nupkg.sha512" - }, - "Microsoft.TestPlatform.ObjectModel/17.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-QwiBJcC/oEA1kojOaB0uPWOIo4i6BYuTBBYJVhUvmXkyYqZ2Ut/VZfgi+enf8LF8J4sjO98oRRFt39MiRorcIw==", - "path": "microsoft.testplatform.objectmodel/17.5.0", - "hashPath": "microsoft.testplatform.objectmodel.17.5.0.nupkg.sha512" - }, - "Microsoft.TestPlatform.TestHost/17.5.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-X86aikwp9d4SDcBChwzQYZihTPGEtMdDk+9t64emAl7N0Tq+OmlLAoW+Rs+2FB2k6QdUicSlT4QLO2xABRokaw==", - "path": "microsoft.testplatform.testhost/17.5.0", - "hashPath": "microsoft.testplatform.testhost.17.5.0.nupkg.sha512" - }, - "Microsoft.VisualStudio.Threading.Analyzers/17.5.22": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WzCsniKpC6S9yAerB+Od8pK8RytxW+fFSZ+GjL0y0XdIb7H/os71bWFbKMXxB1omDLZHNm1IdBlcLQm4KmS/AQ==", - "path": "microsoft.visualstudio.threading.analyzers/17.5.22", - "hashPath": "microsoft.visualstudio.threading.analyzers.17.5.22.nupkg.sha512" - }, - "Microsoft.Win32.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", - "path": "microsoft.win32.primitives/4.3.0", - "hashPath": "microsoft.win32.primitives.4.3.0.nupkg.sha512" - }, - "Moq/4.16.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-bw3R9q8cVNhWXNpnvWb0OGP4HadS4zvClq+T1zf7AF+tLY1haZ2AvbHidQekf4PDv1T40c6brZeT/V0IBq7cEQ==", - "path": "moq/4.16.1", - "hashPath": "moq.4.16.1.nupkg.sha512" - }, - "Moq.AutoMock/3.1.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-4FOnn9vEsMxGCqk9saSPur5LUYlrVri+hwTIMJ8vp1yHFaD4621ogcsvD+KnOuJVF4N/gQSofGMg2mrWlvEg/w==", - "path": "moq.automock/3.1.0", - "hashPath": "moq.automock.3.1.0.nupkg.sha512" - }, - "NETStandard.Library/1.6.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", - "path": "netstandard.library/1.6.1", - "hashPath": "netstandard.library.1.6.1.nupkg.sha512" - }, - "Newtonsoft.Json/13.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==", - "path": "newtonsoft.json/13.0.1", - "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512" - }, - "NuGet.Frameworks/5.11.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-eaiXkUjC4NPcquGWzAGMXjuxvLwc6XGKMptSyOGQeT0X70BUZObuybJFZLA0OfTdueLd3US23NBPTBb6iF3V1Q==", - "path": "nuget.frameworks/5.11.0", - "hashPath": "nuget.frameworks.5.11.0.nupkg.sha512" - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==", - "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==", - "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==", - "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.native.System/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", - "path": "runtime.native.system/4.3.0", - "hashPath": "runtime.native.system.4.3.0.nupkg.sha512" - }, - "runtime.native.System.IO.Compression/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==", - "path": "runtime.native.system.io.compression/4.3.0", - "hashPath": "runtime.native.system.io.compression.4.3.0.nupkg.sha512" - }, - "runtime.native.System.Net.Http/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", - "path": "runtime.native.system.net.http/4.3.0", - "hashPath": "runtime.native.system.net.http.4.3.0.nupkg.sha512" - }, - "runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", - "path": "runtime.native.system.security.cryptography.apple/4.3.0", - "hashPath": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512" - }, - "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==", - "path": "runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==", - "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==", - "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==", - "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0", - "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512" - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==", - "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==", - "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==", - "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==", - "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==", - "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "SonarAnalyzer.CSharp/8.52.0.60960": { - "type": "package", - "serviceable": true, - "sha512": "sha512-XZX2dwJaM0EmXUrbz1AET6GnXEMDorPlp9e7B3cQvyZG3eGs6Xmk//ZDybqbPuvPukbr9eOmFrsUxyrtiHm2LQ==", - "path": "sonaranalyzer.csharp/8.52.0.60960", - "hashPath": "sonaranalyzer.csharp.8.52.0.60960.nupkg.sha512" - }, - "StrongNamer/0.2.5": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1IWl8gYnsTC6NXHz63iDpXL8r0y5x0M/Cnq/Ju5uM17gTOQYSeclMkgQsvmGglJEqAwVxayY1sIUR3bb2MAy5Q==", - "path": "strongnamer/0.2.5", - "hashPath": "strongnamer.0.2.5.nupkg.sha512" - }, - "StyleCop.Analyzers.Unstable/1.2.0.435": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ouwPWZxbOV3SmCZxIRqHvljkSzkCyi1tDoMzQtDb/bRP8ctASV/iRJr+A2Gdj0QLaLmWnqTWDrH82/iP+X80Lg==", - "path": "stylecop.analyzers.unstable/1.2.0.435", - "hashPath": "stylecop.analyzers.unstable.1.2.0.435.nupkg.sha512" - }, - "System.AppContext/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==", - "path": "system.appcontext/4.3.0", - "hashPath": "system.appcontext.4.3.0.nupkg.sha512" - }, - "System.Buffers/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==", - "path": "system.buffers/4.3.0", - "hashPath": "system.buffers.4.3.0.nupkg.sha512" - }, - "System.Collections/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", - "path": "system.collections/4.3.0", - "hashPath": "system.collections.4.3.0.nupkg.sha512" - }, - "System.Collections.Concurrent/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", - "path": "system.collections.concurrent/4.3.0", - "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512" - }, - "System.Collections.Immutable/5.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==", - "path": "system.collections.immutable/5.0.0", - "hashPath": "system.collections.immutable.5.0.0.nupkg.sha512" - }, - "System.Collections.NonGeneric/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-prtjIEMhGUnQq6RnPEYLpFt8AtLbp9yq2zxOSrY7KJJZrw25Fi97IzBqY7iqssbM61Ek5b8f3MG/sG1N2sN5KA==", - "path": "system.collections.nongeneric/4.3.0", - "hashPath": "system.collections.nongeneric.4.3.0.nupkg.sha512" - }, - "System.Collections.Specialized/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Epx8PoVZR0iuOnJJDzp7pWvdfMMOAvpUo95pC4ScH2mJuXkKA2Y4aR3cG9qt2klHgSons1WFh4kcGW7cSXvrxg==", - "path": "system.collections.specialized/4.3.0", - "hashPath": "system.collections.specialized.4.3.0.nupkg.sha512" - }, - "System.ComponentModel/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VyGn1jGRZVfxnh8EdvDCi71v3bMXrsu8aYJOwoV7SNDLVhiEqwP86pPMyRGsDsxhXAm2b3o9OIqeETfN5qfezw==", - "path": "system.componentmodel/4.3.0", - "hashPath": "system.componentmodel.4.3.0.nupkg.sha512" - }, - "System.ComponentModel.Annotations/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-SY2RLItHt43rd8J9D8M8e8NM4m+9WLN2uUd9G0n1I4hj/7w+v3pzK6ZBjexlG1/2xvLKQsqir3UGVSyBTXMLWA==", - "path": "system.componentmodel.annotations/4.3.0", - "hashPath": "system.componentmodel.annotations.4.3.0.nupkg.sha512" - }, - "System.ComponentModel.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-j8GUkCpM8V4d4vhLIIoBLGey2Z5bCkMVNjEZseyAlm4n5arcsJOeI3zkUP+zvZgzsbLTYh4lYeP/ZD/gdIAPrw==", - "path": "system.componentmodel.primitives/4.3.0", - "hashPath": "system.componentmodel.primitives.4.3.0.nupkg.sha512" - }, - "System.ComponentModel.TypeConverter/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-16pQ6P+EdhcXzPiEK4kbA953Fu0MNG2ovxTZU81/qsCd1zPRsKc3uif5NgvllCY598k6bI0KUyKW8fanlfaDQg==", - "path": "system.componentmodel.typeconverter/4.3.0", - "hashPath": "system.componentmodel.typeconverter.4.3.0.nupkg.sha512" - }, - "System.Composition/1.0.31": { - "type": "package", - "serviceable": true, - "sha512": "sha512-I+D26qpYdoklyAVUdqwUBrEIckMNjAYnuPJy/h9dsQItpQwVREkDFs4b4tkBza0kT2Yk48Lcfsv2QQ9hWsh9Iw==", - "path": "system.composition/1.0.31", - "hashPath": "system.composition.1.0.31.nupkg.sha512" - }, - "System.Composition.AttributedModel/1.0.31": { - "type": "package", - "serviceable": true, - "sha512": "sha512-NHWhkM3ZkspmA0XJEsKdtTt1ViDYuojgSND3yHhTzwxepiwqZf+BCWuvCbjUt4fe0NxxQhUDGJ5km6sLjo9qnQ==", - "path": "system.composition.attributedmodel/1.0.31", - "hashPath": "system.composition.attributedmodel.1.0.31.nupkg.sha512" - }, - "System.Composition.Convention/1.0.31": { - "type": "package", - "serviceable": true, - "sha512": "sha512-GLjh2Ju71k6C0qxMMtl4efHa68NmWeIUYh4fkUI8xbjQrEBvFmRwMDFcylT8/PR9SQbeeL48IkFxU/+gd0nYEQ==", - "path": "system.composition.convention/1.0.31", - "hashPath": "system.composition.convention.1.0.31.nupkg.sha512" - }, - "System.Composition.Hosting/1.0.31": { - "type": "package", - "serviceable": true, - "sha512": "sha512-fN1bT4RX4vUqjbgoyuJFVUizAl2mYF5VAb+bVIxIYZSSc0BdnX+yGAxcavxJuDDCQ1K+/mdpgyEFc8e9ikjvrg==", - "path": "system.composition.hosting/1.0.31", - "hashPath": "system.composition.hosting.1.0.31.nupkg.sha512" - }, - "System.Composition.Runtime/1.0.31": { - "type": "package", - "serviceable": true, - "sha512": "sha512-0LEJN+2NVM89CE4SekDrrk5tHV5LeATltkp+9WNYrR+Huiyt0vaCqHbbHtVAjPyeLWIc8dOz/3kthRBj32wGQg==", - "path": "system.composition.runtime/1.0.31", - "hashPath": "system.composition.runtime.1.0.31.nupkg.sha512" - }, - "System.Composition.TypedParts/1.0.31": { - "type": "package", - "serviceable": true, - "sha512": "sha512-0Zae/FtzeFgDBBuILeIbC/T9HMYbW4olAmi8XqqAGosSOWvXfiQLfARZEhiGd0LVXaYgXr0NhxiU1LldRP1fpQ==", - "path": "system.composition.typedparts/1.0.31", - "hashPath": "system.composition.typedparts.1.0.31.nupkg.sha512" - }, - "System.Configuration.ConfigurationManager/4.4.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-gWwQv/Ug1qWJmHCmN17nAbxJYmQBM/E94QxKLksvUiiKB1Ld3Sc/eK1lgmbSjDFxkQhVuayI/cGFZhpBSodLrg==", - "path": "system.configuration.configurationmanager/4.4.0", - "hashPath": "system.configuration.configurationmanager.4.4.0.nupkg.sha512" - }, - "System.Console/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", - "path": "system.console/4.3.0", - "hashPath": "system.console.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.Debug/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", - "path": "system.diagnostics.debug/4.3.0", - "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.DiagnosticSource/8.0.0-preview.5.23272.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-z8aWPWEARVzr7lFRzlS/C05DUbzO8A/CSC3RRao8ik8CedaDXmbbUeOAH3WGS3XDbF/sY6K6uhwZacwWxzmXgA==", - "path": "system.diagnostics.diagnosticsource/8.0.0-preview.5.23272.1", - "hashPath": "system.diagnostics.diagnosticsource.8.0.0-preview.5.23272.1.nupkg.sha512" - }, - "System.Diagnostics.Tools/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", - "path": "system.diagnostics.tools/4.3.0", - "hashPath": "system.diagnostics.tools.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.TraceSource/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VnYp1NxGx8Ww731y2LJ1vpfb/DKVNKEZ8Jsh5SgQTZREL/YpWRArgh9pI8CDLmgHspZmLL697CaLvH85qQpRiw==", - "path": "system.diagnostics.tracesource/4.3.0", - "hashPath": "system.diagnostics.tracesource.4.3.0.nupkg.sha512" - }, - "System.Diagnostics.Tracing/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", - "path": "system.diagnostics.tracing/4.3.0", - "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512" - }, - "System.Dynamic.Runtime/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-SNVi1E/vfWUAs/WYKhE9+qlS6KqK0YVhnlT0HQtr8pMIA8YX3lwy3uPMownDwdYISBdmAF/2holEIldVp85Wag==", - "path": "system.dynamic.runtime/4.3.0", - "hashPath": "system.dynamic.runtime.4.3.0.nupkg.sha512" - }, - "System.Globalization/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", - "path": "system.globalization/4.3.0", - "hashPath": "system.globalization.4.3.0.nupkg.sha512" - }, - "System.Globalization.Calendars/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", - "path": "system.globalization.calendars/4.3.0", - "hashPath": "system.globalization.calendars.4.3.0.nupkg.sha512" - }, - "System.Globalization.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", - "path": "system.globalization.extensions/4.3.0", - "hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512" - }, - "System.IO/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", - "path": "system.io/4.3.0", - "hashPath": "system.io.4.3.0.nupkg.sha512" - }, - "System.IO.Compression/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", - "path": "system.io.compression/4.3.0", - "hashPath": "system.io.compression.4.3.0.nupkg.sha512" - }, - "System.IO.Compression.ZipFile/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==", - "path": "system.io.compression.zipfile/4.3.0", - "hashPath": "system.io.compression.zipfile.4.3.0.nupkg.sha512" - }, - "System.IO.FileSystem/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", - "path": "system.io.filesystem/4.3.0", - "hashPath": "system.io.filesystem.4.3.0.nupkg.sha512" - }, - "System.IO.FileSystem.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", - "path": "system.io.filesystem.primitives/4.3.0", - "hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512" - }, - "System.IO.Pipelines/5.0.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-qEePWsaq9LoEEIqhbGe6D5J8c9IqQOUuTzzV6wn1POlfdLkJliZY3OlB0j0f17uMWlqZYjH7txj+2YbyrIA8Yg==", - "path": "system.io.pipelines/5.0.1", - "hashPath": "system.io.pipelines.5.0.1.nupkg.sha512" - }, - "System.Linq/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", - "path": "system.linq/4.3.0", - "hashPath": "system.linq.4.3.0.nupkg.sha512" - }, - "System.Linq.Expressions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", - "path": "system.linq.expressions/4.3.0", - "hashPath": "system.linq.expressions.4.3.0.nupkg.sha512" - }, - "System.Memory/4.5.4": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", - "path": "system.memory/4.5.4", - "hashPath": "system.memory.4.5.4.nupkg.sha512" - }, - "System.Net.Http/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", - "path": "system.net.http/4.3.0", - "hashPath": "system.net.http.4.3.0.nupkg.sha512" - }, - "System.Net.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", - "path": "system.net.primitives/4.3.0", - "hashPath": "system.net.primitives.4.3.0.nupkg.sha512" - }, - "System.Net.Sockets/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==", - "path": "system.net.sockets/4.3.0", - "hashPath": "system.net.sockets.4.3.0.nupkg.sha512" - }, - "System.ObjectModel/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", - "path": "system.objectmodel/4.3.0", - "hashPath": "system.objectmodel.4.3.0.nupkg.sha512" - }, - "System.Reflection/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", - "path": "system.reflection/4.3.0", - "hashPath": "system.reflection.4.3.0.nupkg.sha512" - }, - "System.Reflection.Emit/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==", - "path": "system.reflection.emit/4.3.0", - "hashPath": "system.reflection.emit.4.3.0.nupkg.sha512" - }, - "System.Reflection.Emit.ILGeneration/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", - "path": "system.reflection.emit.ilgeneration/4.3.0", - "hashPath": "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512" - }, - "System.Reflection.Emit.Lightweight/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", - "path": "system.reflection.emit.lightweight/4.3.0", - "hashPath": "system.reflection.emit.lightweight.4.3.0.nupkg.sha512" - }, - "System.Reflection.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", - "path": "system.reflection.extensions/4.3.0", - "hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512" - }, - "System.Reflection.Metadata/5.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ==", - "path": "system.reflection.metadata/5.0.0", - "hashPath": "system.reflection.metadata.5.0.0.nupkg.sha512" - }, - "System.Reflection.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", - "path": "system.reflection.primitives/4.3.0", - "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" - }, - "System.Reflection.TypeExtensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", - "path": "system.reflection.typeextensions/4.3.0", - "hashPath": "system.reflection.typeextensions.4.3.0.nupkg.sha512" - }, - "System.Resources.ResourceManager/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", - "path": "system.resources.resourcemanager/4.3.0", - "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" - }, - "System.Runtime/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", - "path": "system.runtime/4.3.0", - "hashPath": "system.runtime.4.3.0.nupkg.sha512" - }, - "System.Runtime.CompilerServices.Unsafe/5.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==", - "path": "system.runtime.compilerservices.unsafe/5.0.0", - "hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512" - }, - "System.Runtime.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", - "path": "system.runtime.extensions/4.3.0", - "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512" - }, - "System.Runtime.Handles/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", - "path": "system.runtime.handles/4.3.0", - "hashPath": "system.runtime.handles.4.3.0.nupkg.sha512" - }, - "System.Runtime.InteropServices/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", - "path": "system.runtime.interopservices/4.3.0", - "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512" - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", - "path": "system.runtime.interopservices.runtimeinformation/4.3.0", - "hashPath": "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512" - }, - "System.Runtime.Numerics/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", - "path": "system.runtime.numerics/4.3.0", - "hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Algorithms/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", - "path": "system.security.cryptography.algorithms/4.3.0", - "hashPath": "system.security.cryptography.algorithms.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Cng/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", - "path": "system.security.cryptography.cng/4.3.0", - "hashPath": "system.security.cryptography.cng.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Csp/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", - "path": "system.security.cryptography.csp/4.3.0", - "hashPath": "system.security.cryptography.csp.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Encoding/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", - "path": "system.security.cryptography.encoding/4.3.0", - "hashPath": "system.security.cryptography.encoding.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", - "path": "system.security.cryptography.openssl/4.3.0", - "hashPath": "system.security.cryptography.openssl.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.Primitives/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", - "path": "system.security.cryptography.primitives/4.3.0", - "hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512" - }, - "System.Security.Cryptography.ProtectedData/4.4.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==", - "path": "system.security.cryptography.protecteddata/4.4.0", - "hashPath": "system.security.cryptography.protecteddata.4.4.0.nupkg.sha512" - }, - "System.Security.Cryptography.X509Certificates/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", - "path": "system.security.cryptography.x509certificates/4.3.0", - "hashPath": "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512" - }, - "System.Text.Encoding/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", - "path": "system.text.encoding/4.3.0", - "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" - }, - "System.Text.Encoding.CodePages/4.5.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==", - "path": "system.text.encoding.codepages/4.5.1", - "hashPath": "system.text.encoding.codepages.4.5.1.nupkg.sha512" - }, - "System.Text.Encoding.Extensions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", - "path": "system.text.encoding.extensions/4.3.0", - "hashPath": "system.text.encoding.extensions.4.3.0.nupkg.sha512" - }, - "System.Text.RegularExpressions/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", - "path": "system.text.regularexpressions/4.3.0", - "hashPath": "system.text.regularexpressions.4.3.0.nupkg.sha512" - }, - "System.Threading/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", - "path": "system.threading/4.3.0", - "hashPath": "system.threading.4.3.0.nupkg.sha512" - }, - "System.Threading.Tasks/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", - "path": "system.threading.tasks/4.3.0", - "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" - }, - "System.Threading.Tasks.Extensions/4.5.4": { - "type": "package", - "serviceable": true, - "sha512": "sha512-zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", - "path": "system.threading.tasks.extensions/4.5.4", - "hashPath": "system.threading.tasks.extensions.4.5.4.nupkg.sha512" - }, - "System.Threading.Timer/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==", - "path": "system.threading.timer/4.3.0", - "hashPath": "system.threading.timer.4.3.0.nupkg.sha512" - }, - "System.Xml.ReaderWriter/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", - "path": "system.xml.readerwriter/4.3.0", - "hashPath": "system.xml.readerwriter.4.3.0.nupkg.sha512" - }, - "System.Xml.XDocument/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", - "path": "system.xml.xdocument/4.3.0", - "hashPath": "system.xml.xdocument.4.3.0.nupkg.sha512" - }, - "System.Xml.XmlDocument/4.3.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==", - "path": "system.xml.xmldocument/4.3.0", - "hashPath": "system.xml.xmldocument.4.3.0.nupkg.sha512" - }, - "xunit.abstractions/2.0.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==", - "path": "xunit.abstractions/2.0.3", - "hashPath": "xunit.abstractions.2.0.3.nupkg.sha512" - }, - "xunit.analyzers/1.0.0": { - "type": "package", - "serviceable": true, - "sha512": "sha512-BeO8hEgs/c8Ls2647fPfieMngncvf0D0xYNDfIO59MolxtCtVjFRd6SRc+7tj8VMqkVOuJcnc9eh4ngI2cAmLQ==", - "path": "xunit.analyzers/1.0.0", - "hashPath": "xunit.analyzers.1.0.0.nupkg.sha512" - }, - "xunit.assert/2.4.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-pxJISOFjn2XTTi1mcDCkRZrTFb9OtRRCtx2kZFNF51GdReLr1ls2rnyxvAS4JO247K3aNtflvh5Q0346K5BROA==", - "path": "xunit.assert/2.4.2", - "hashPath": "xunit.assert.2.4.2.nupkg.sha512" - }, - "Xunit.Combinatorial/1.5.25": { - "type": "package", - "serviceable": true, - "sha512": "sha512-wB5Knl4YznMl/vtfk3fv5OiTO5lKG2xjsk4kKjsvYPxNxYA4gR8rL0SKSJqhGOxUQGqAmkRragIK+sgMO5I61g==", - "path": "xunit.combinatorial/1.5.25", - "hashPath": "xunit.combinatorial.1.5.25.nupkg.sha512" - }, - "xunit.core/2.4.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-KB4yGCxNqIVyekhJLXtKSEq6BaXVp/JO3mbGVE1hxypZTLEe7h+sTbAhpA+yZW2dPtXTuiW+C1B2oxxHEkrmOw==", - "path": "xunit.core/2.4.2", - "hashPath": "xunit.core.2.4.2.nupkg.sha512" - }, - "xunit.extensibility.core/2.4.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-W1BoXTIN1C6kpVSMw25huSet25ky6IAQUNovu3zGOGN/jWnbgSoTyCrlIhmXSg0tH5nEf8q7h3OjNHOjyu5PfA==", - "path": "xunit.extensibility.core/2.4.2", - "hashPath": "xunit.extensibility.core.2.4.2.nupkg.sha512" - }, - "xunit.extensibility.execution/2.4.2": { - "type": "package", - "serviceable": true, - "sha512": "sha512-CZmgcKkwpyo8FlupZdWpJCryrAOWLh1FBPG6gmVZuPQkGQsim/oL4PcP4nfrC2hHgXUFtluvaJ0Sp9PQKUMNpg==", - "path": "xunit.extensibility.execution/2.4.2", - "hashPath": "xunit.extensibility.execution.2.4.2.nupkg.sha512" - }, - "xunit.runner.visualstudio/2.4.3": { - "type": "package", - "serviceable": true, - "sha512": "sha512-kZZSmOmKA8OBlAJaquPXnJJLM9RwQ27H7BMVqfMLUcTi9xHinWGJiWksa3D4NEtz0wZ/nxd2mogObvBgJKCRhQ==", - "path": "xunit.runner.visualstudio/2.4.3", - "hashPath": "xunit.runner.visualstudio.2.4.3.nupkg.sha512" - }, - "Microsoft.Extensions.Telemetry.Abstractions/8.0.0-dev": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Gen.MeteringReports/8.0.0-dev": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Microsoft.TestUtilities/8.0.0-dev": { - "type": "project", - "serviceable": false, - "sha512": "" - }, - "Microsoft.Gen.MeteringReports.Reference/8.0.0.0": { - "type": "reference", - "serviceable": false, - "sha512": "" - }, - "Microsoft.TestUtilities.Reference/8.0.0.0": { - "type": "reference", - "serviceable": false, - "sha512": "" - } - } -} \ No newline at end of file diff --git a/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/Microsoft.Gen.MeteringReports.Roslyn3.8.Unit.Tests.runtimeconfig.json b/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/Microsoft.Gen.MeteringReports.Roslyn3.8.Unit.Tests.runtimeconfig.json deleted file mode 100644 index 716c590e70f..00000000000 --- a/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/Microsoft.Gen.MeteringReports.Roslyn3.8.Unit.Tests.runtimeconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "runtimeOptions": { - "tfm": "net8.0", - "framework": { - "name": "Microsoft.NETCore.App", - "version": "8.0.0-preview.5.23260.3" - }, - "configProperties": { - "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false - } - } -} \ No newline at end of file diff --git a/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/xunit.runner.json b/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/xunit.runner.json deleted file mode 100644 index 6e96fab28c8..00000000000 --- a/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/xunit.runner.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "diagnosticMessages": true, - "longRunningTestSeconds": 300 -} diff --git a/test/Generators/Microsoft.Gen.MetricsReports/TestClasses/MeterDimensionsAttributedWithXmlDescriptions.cs b/test/Generators/Microsoft.Gen.MetricsReports/TestClasses/MeterDimensionsAttributedWithXmlDescriptions.cs index a0661917467..3777e60d353 100644 --- a/test/Generators/Microsoft.Gen.MetricsReports/TestClasses/MeterDimensionsAttributedWithXmlDescriptions.cs +++ b/test/Generators/Microsoft.Gen.MetricsReports/TestClasses/MeterDimensionsAttributedWithXmlDescriptions.cs @@ -8,33 +8,33 @@ namespace TestClasses { [SuppressMessage("Usage", "CA1801:Review unused parameters", - Justification = "For testing emitter for classes with description for metrics.")] - Justification = "Metrics generator tests")] + Justification = "For testing emitter for classes with description for metrics.")] + Justification = "Metrics generator tests")] internal static partial class MeterDimensionsAttributedWithXmlDescriptions { public const string Dim1 = "Dim1"; - [Counter(DescripedDimensions.Dimension1, Dim1)] + [Counter(DescriptedDimensions.Dimension1, Dim1)] public static partial DescribedDimensionCounter CreatePublicCounter(Meter meter); /// - /// DimenisonDefinedInMetricClass description. + /// DimensionDefinedInMetricClass description. /// - public const string DimenisonDefinedInMetricClass = "DimenisonDefinedInMetricClass"; + public const string DimensionDefinedInMetricClass = "DimensionDefinedInMetricClass"; - [Histogram(DescripedDimensions.Dimension2, DimenisonDefinedInMetricClass)] + [Histogram(DescriptedDimensions.Dimension2, DimensionDefinedInMetricClass)] public static partial DescribedDimensionHistogram CreatePublicHistogram(Meter meter); [Counter(typeof(DimensionForStrongTypes), Name = "MyStrongTypeMetricWithDescription")] - public static partial StrongTypeCounterWithDescripedDimension CreateStrongTypeCounterWithDescibedDimensions(Meter meter); + public static partial StrongTypeCounterWithDescriptedDimension CreateStrongTypeCounterWithDescribedDimensions(Meter meter); } #pragma warning disable SA1402 // File may only contain a single type /// - /// DescripedDimensions class description. + /// DescriptedDimensions class description. /// - internal static class DescripedDimensions + internal static class DescriptedDimensions { /// /// Dimension1 description. @@ -67,7 +67,7 @@ public class DimensionForStrongTypes /// /// Gets or sets MetricEnum2. /// - [Dimension("Enum2")] + [TagName("Enum2")] public MetricOperations MetricEnum2 { get; set; } /// @@ -97,7 +97,7 @@ public class ChildClassDimensionForStrongTypes /// /// Gets or sets SomeDim. /// - [Dimension("dim2FromAttribute")] + [TagName("dim2FromAttribute")] public string? SomeDim; } @@ -111,7 +111,7 @@ public struct DimensionForStrongTypesDimensionsStruct /// /// Gets or sets Dim5Struct. /// - [Dimension("Dim5FromAttribute")] + [TagName("Dim5FromAttribute")] public string Dim5Struct { get; set; } } #pragma warning restore SA1402 // File may only contain a single type diff --git a/test/Generators/Microsoft.Gen.MetricsReports/Unit/Microsoft.Gen.MetricsReports.Unit.Tests.csproj b/test/Generators/Microsoft.Gen.MetricsReports/Unit/Microsoft.Gen.MetricsReports.Unit.Tests.csproj index c0dbef58c69..c42782b9da5 100644 --- a/test/Generators/Microsoft.Gen.MetricsReports/Unit/Microsoft.Gen.MetricsReports.Unit.Tests.csproj +++ b/test/Generators/Microsoft.Gen.MetricsReports/Unit/Microsoft.Gen.MetricsReports.Unit.Tests.csproj @@ -1,4 +1,4 @@ - + Microsoft.Gen.MetricsReports.Test Unit tests for Microsoft.Gen.MetricsReports. @@ -16,7 +16,7 @@ PreserveNewest - + GoldenReports\%(RecursiveDir)%(Filename)%(Extension) PreserveNewest From 204b7d70e395a24a69f97cba64636d344cf287bc Mon Sep 17 00:00:00 2001 From: Nikita Balabaev Date: Mon, 4 Mar 2024 20:01:24 +0100 Subject: [PATCH 7/9] add tests and the README --- .../ComplianceReportsGenerator.cs | 40 +++--- .../MetricsReportsGenerator.cs | 42 ++---- src/Generators/Shared/GeneratorUtilities.cs | 27 ++++ .../README.md | 134 ++++++++++++++++++ .../Unit/GeneratorTests.cs | 130 ++++++++++++----- .../Unit/GeneratorTests.cs | 21 +-- 6 files changed, 301 insertions(+), 93 deletions(-) diff --git a/src/Generators/Microsoft.Gen.ComplianceReports/ComplianceReportsGenerator.cs b/src/Generators/Microsoft.Gen.ComplianceReports/ComplianceReportsGenerator.cs index 7c6bffb9a95..31cdb2441ae 100644 --- a/src/Generators/Microsoft.Gen.ComplianceReports/ComplianceReportsGenerator.cs +++ b/src/Generators/Microsoft.Gen.ComplianceReports/ComplianceReportsGenerator.cs @@ -3,6 +3,7 @@ using System.Globalization; using System.IO; +using System.Text; using Microsoft.CodeAnalysis; using Microsoft.Gen.Shared; using Microsoft.Shared.DiagnosticIds; @@ -20,8 +21,8 @@ public sealed class ComplianceReportsGenerator : ISourceGenerator private const string FallbackFileName = "ComplianceReport.json"; + private readonly string _fileName; private string? _directory; - private string _fileName; public ComplianceReportsGenerator() : this(null) @@ -80,29 +81,30 @@ public void Execute(GeneratorExecutionContext context) context.CancellationToken.ThrowIfCancellationRequested(); - if (_directory == null) + var options = context.AnalyzerConfigOptions.GlobalOptions; + _directory ??= GeneratorUtilities.TryRetrieveOptionsValue(options, ComplianceReportOutputPathMSBuildProperty, out var reportOutputPath) + ? reportOutputPath! + : GeneratorUtilities.GetDefaultReportOutputPath(options); + + if (string.IsNullOrWhiteSpace(_directory)) { - if (!context.AnalyzerConfigOptions.GlobalOptions.TryGetValue(ComplianceReportOutputPathMSBuildProperty, out _directory) || - string.IsNullOrWhiteSpace(_directory)) - { - // Report diagnostic: - var diagnostic = new DiagnosticDescriptor( - DiagnosticIds.AuditReports.AUDREPGEN001, - "ComplianceReports generator couldn't resolve output path for the report. It won't be generated.", - "MSBuild property is missing or not set. The report won't be generated.", - nameof(DiagnosticIds.AuditReports), - DiagnosticSeverity.Info, - isEnabledByDefault: true, - helpLinkUri: string.Format(CultureInfo.InvariantCulture, DiagnosticIds.UrlFormat, DiagnosticIds.AuditReports.AUDREPGEN001)); - - context.ReportDiagnostic(Diagnostic.Create(diagnostic, location: null)); - return; - } + // Report diagnostic: + var diagnostic = new DiagnosticDescriptor( + DiagnosticIds.AuditReports.AUDREPGEN001, + "ComplianceReports generator couldn't resolve output path for the report. It won't be generated.", + "Both and MSBuild properties are not set. The report won't be generated.", + nameof(DiagnosticIds.AuditReports), + DiagnosticSeverity.Info, + isEnabledByDefault: true, + helpLinkUri: string.Format(CultureInfo.InvariantCulture, DiagnosticIds.UrlFormat, DiagnosticIds.AuditReports.AUDREPGEN001)); + + context.ReportDiagnostic(Diagnostic.Create(diagnostic, location: null)); + return; } _ = Directory.CreateDirectory(_directory); // Write report as JSON file. - File.WriteAllText(Path.Combine(_directory, _fileName), report); + File.WriteAllText(Path.Combine(_directory, _fileName), report, Encoding.UTF8); } } diff --git a/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs b/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs index 07422ebc31d..6b67c6ecc8f 100644 --- a/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs +++ b/src/Generators/Microsoft.Gen.MetricsReports/MetricsReportsGenerator.cs @@ -20,10 +20,20 @@ public class MetricsReportsGenerator : ISourceGenerator private const string GenerateMetricDefinitionReport = "build_property.GenerateMetricsReport"; private const string RootNamespace = "build_property.rootnamespace"; private const string ReportOutputPath = "build_property.MetricsReportOutputPath"; - private const string CompilationOutputPath = "build_property.outputpath"; - private const string CurrentProjectPath = "build_property.projectdir"; private const string FileName = "MetricsReport.json"; + private readonly string _fileName; + + public MetricsReportsGenerator() + : this(FileName) + { + } + + internal MetricsReportsGenerator(string reportFileName) + { + _fileName = reportFileName; + } + public void Initialize(GeneratorInitializationContext context) { context.RegisterForSyntaxNotifications(ClassDeclarationSyntaxReceiver.Create); @@ -51,9 +61,9 @@ public void Execute(GeneratorExecutionContext context) var options = context.AnalyzerConfigOptions.GlobalOptions; - var path = TryRetrieveOptionsValue(options, ReportOutputPath, out var reportOutputPath) + var path = GeneratorUtilities.TryRetrieveOptionsValue(options, ReportOutputPath, out var reportOutputPath) ? reportOutputPath! - : GetDefaultReportOutputPath(options); + : GeneratorUtilities.GetDefaultReportOutputPath(options); if (string.IsNullOrWhiteSpace(path)) { @@ -78,7 +88,7 @@ public void Execute(GeneratorExecutionContext context) var reportedMetrics = MapToCommonModel(meteringClasses, rootNamespace); var report = emitter.GenerateReport(reportedMetrics, context.CancellationToken); - File.WriteAllText(Path.Combine(path, FileName), report, Encoding.UTF8); + File.WriteAllText(Path.Combine(path, _fileName), report, Encoding.UTF8); } private static ReportedMetricClass[] MapToCommonModel(IReadOnlyList meteringClasses, string? rootNamespace) @@ -99,26 +109,4 @@ private static ReportedMetricClass[] MapToCommonModel(IReadOnlyList return reportedMetrics.ToArray(); } - - private static bool TryRetrieveOptionsValue(AnalyzerConfigOptions options, string name, out string? value) - => options.TryGetValue(name, out value) && !string.IsNullOrWhiteSpace(value); - - private static string GetDefaultReportOutputPath(AnalyzerConfigOptions options) - { - if (!TryRetrieveOptionsValue(options, CompilationOutputPath, out var compilationOutputPath)) - { - return string.Empty; - } - - // If is absolute - return it right away: - if (Path.IsPathRooted(compilationOutputPath)) - { - return compilationOutputPath!; - } - - // Get and combine it with if the former isn't empty: - return TryRetrieveOptionsValue(options, CurrentProjectPath, out var currentProjectPath) - ? Path.Combine(currentProjectPath!, compilationOutputPath!) - : string.Empty; - } } diff --git a/src/Generators/Shared/GeneratorUtilities.cs b/src/Generators/Shared/GeneratorUtilities.cs index 46be18a59fb..23d00603311 100644 --- a/src/Generators/Shared/GeneratorUtilities.cs +++ b/src/Generators/Shared/GeneratorUtilities.cs @@ -4,11 +4,13 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; +using System.IO; using System.Linq; using System.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; [assembly: System.Resources.NeutralResourcesLanguage("en-us")] @@ -21,6 +23,9 @@ namespace Microsoft.Gen.Shared; #endif internal static class GeneratorUtilities { + private const string CompilationOutputPath = "build_property.outputpath"; + private const string CurrentProjectPath = "build_property.projectdir"; + public static string GeneratedCodeAttribute { get; } = $"global::System.CodeDom.Compiler.GeneratedCodeAttribute(" + $"\"{typeof(GeneratorUtilities).Assembly.GetName().Name}\", " + $"\"{typeof(GeneratorUtilities).Assembly.GetName().Version}\")"; @@ -136,4 +141,26 @@ public static bool ShouldGenerateReport(GeneratorExecutionContext context, strin return string.Equals(generateFiles, bool.TrueString, StringComparison.OrdinalIgnoreCase); } + + public static bool TryRetrieveOptionsValue(AnalyzerConfigOptions options, string name, out string? value) + => options.TryGetValue(name, out value) && !string.IsNullOrWhiteSpace(value); + + public static string GetDefaultReportOutputPath(AnalyzerConfigOptions options) + { + if (!TryRetrieveOptionsValue(options, CompilationOutputPath, out var compilationOutputPath)) + { + return string.Empty; + } + + // If is absolute - return it right away: + if (Path.IsPathRooted(compilationOutputPath)) + { + return compilationOutputPath!; + } + + // Get and combine it with if the former isn't empty: + return TryRetrieveOptionsValue(options, CurrentProjectPath, out var currentProjectPath) + ? Path.Combine(currentProjectPath!, compilationOutputPath!) + : string.Empty; + } } diff --git a/src/Packages/Microsoft.Extensions.AuditReports/README.md b/src/Packages/Microsoft.Extensions.AuditReports/README.md index 8c044fea796..bd871cac8b5 100644 --- a/src/Packages/Microsoft.Extensions.AuditReports/README.md +++ b/src/Packages/Microsoft.Extensions.AuditReports/README.md @@ -18,6 +18,140 @@ Or directly in the C# project file: ``` +## Available reports + +The following reports are available in this package: + +- **Metrics**: Reports on the use of source-generated metric definitions in the code. +- **Compliance**: Reports on the use of privacy-sensitive data in the code, including source-generated logging methods. + +The table below shows various MSBuild properties that you can use to control the behavior of the reports generation: + +| Metrics report generator | Compliance report generator | Description | +| --- | --- | --- | +| `` | `` | Controls whether the report is generated. | +| `` | `` | The path to the directory where the report will be generated. | + +The file names of the reports are defined by the corresponding report generator. +The metrics report will be generated in a file named `MetricsReport.json`. +The compliance report will be generated in a file named `ComplianceReport.json`. + +For example, to generate a compliance report, you can add the following to your project file: + +```xml + + true + C:\AuditReports + +``` + +Both report generators follow the same strategy if you don't provide a value for the property with the output path (`ComplianceReportOutputPath` or `MetricsReportOutputPath`). +In that case, the report path will be determined via the following strategy: + +1. If the `$(OutputPath)` property is defined and it's an absolute path, the report will be generated in that directory. +2. If both `$(OutputPath)` and `$(ProjectDir)` properties are defined and the `$(OutputPath)` property contains a relative path, the report will be generated in the `$(ProjectDir)\$(OutputPath)` directory. + +If none of the above conditions are met, the report will not be generated and the diagnostic message will be emitted. + +## Example of a compliance report + +Let's assume we have a project with a class that contains privacy-sensitive data: + +```csharp +namespace ComplianceTesting +{ + internal sealed class User + { + internal User(string name, DateTimeOffset registeredAt) + { + Name = name; + RegisteredAt = registeredAt; + } + + [PrivateData] + public string Name { get; } + + public DateTimeOffset RegisteredAt { get; } + } +} +``` + +`Microsoft.Extensions.Compliance.Testing` package contains a definition for `[PrivateData]` attribute, we use it here for demonstration purposes only. + +A compliance report for the code listed above might look like this: + +```json +{ + "Name": "MyAssembly", + "Types": [ + { + "Name": "ComplianceTesting.User", + "Members": [ + { + "Name": "Name", + "Type": "string", + "File": "C:\\source\\samples\\src\\MyAssembly\\User.cs", + "Line": "12", + "Classifications": [ + { + "Name": "PrivateData" + } + ] + } + ] + } + ] +} +``` + +## Example of a metrics report + +Let's assume we have a project with a class that contains a source-generated metric definition: + +```csharp +internal sealed partial class Metric +{ + internal static class Tags + { + /// + /// The target of the metric, e.g. the name of the service or the name of the method. + /// + public const string Target = nameof(Target); + + /// + /// The reason for the failure, e.g. the exception message or the HTTP status code. + /// + public const string FailureReason = nameof(FailureReason); + } + + /// + /// The counter metric for the number of failed requests. + /// + [Counter(Tags.Target, Tags.FailureReason)] + public static partial FailedRequestCounter CreateFailedRequestCounter(Meter meter); +} +``` + +A metrics report for the code listed above might look like this: + +```json +[ + { + "MyAssembly": + [ + { + "MetricName": "FailedRequestCounter", + "MetricDescription": "The counter metric for the number of failed requests.", + "InstrumentName": "Counter", + "Dimensions": { + "Target": "The target of the metric, e.g. the name of the service or the name of the method.", + "FailureReason": "The reason for the failure, e.g. the exception message or the HTTP status code." + } + } + ] + } +] +``` ## Feedback & Contributing diff --git a/test/Generators/Microsoft.Gen.ComplianceReports/Unit/GeneratorTests.cs b/test/Generators/Microsoft.Gen.ComplianceReports/Unit/GeneratorTests.cs index 8f93e78504a..0959430a641 100644 --- a/test/Generators/Microsoft.Gen.ComplianceReports/Unit/GeneratorTests.cs +++ b/test/Generators/Microsoft.Gen.ComplianceReports/Unit/GeneratorTests.cs @@ -1,8 +1,10 @@ // 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.Linq; using System.Reflection; using System.Threading.Tasks; using Microsoft.CodeAnalysis; @@ -47,9 +49,14 @@ public GeneratorTests(ITestOutputHelper output) _output = output; } - [Fact] - public async Task TestAll() + [Theory] + [CombinatorialData] + public async Task TestAll(bool useExplicitReportPath) { + Dictionary? options = useExplicitReportPath + ? new() { ["build_property.ComplianceReportOutputPath"] = Directory.GetCurrentDirectory() } + : null; + foreach (var inputFile in Directory.GetFiles("TestClasses")) { var stem = Path.GetFileNameWithoutExtension(inputFile); @@ -58,7 +65,7 @@ public async Task TestAll() if (File.Exists(goldenReportFile)) { var tmp = Path.GetTempFileName(); - var d = await RunGenerator(File.ReadAllText(inputFile), tmp); + var d = await RunGenerator(File.ReadAllText(inputFile), tmp, options); Assert.Empty(d); var golden = File.ReadAllText(goldenReportFile); @@ -66,7 +73,7 @@ public async Task TestAll() if (golden != generated) { - _output.WriteLine($"MISMATCH: goldenReportFile {goldenReportFile}, tmp {tmp}"); + _output.WriteLine($"MISMATCH: golden report {goldenReportFile}, generated {tmp}"); _output.WriteLine("----"); _output.WriteLine("golden:"); _output.WriteLine(golden); @@ -76,36 +83,16 @@ public async Task TestAll() _output.WriteLine("----"); } - Assert.Equal(golden, generated); File.Delete(tmp); + Assert.Equal(golden, generated); } else { // generate the golden file if it doesn't already exist _output.WriteLine($"Generating golden report: {goldenReportFile}"); - _ = await RunGenerator(File.ReadAllText(inputFile), goldenReportFile); + _ = await RunGenerator(File.ReadAllText(inputFile), goldenReportFile, options); } } - - static async Task> RunGenerator(string code, string outputFile) - { - var (d, _) = await RoslynTestUtils.RunGenerator( - new ComplianceReportsGenerator(outputFile), - new[] - { - Assembly.GetAssembly(typeof(ILogger))!, - Assembly.GetAssembly(typeof(LoggerMessageAttribute))!, - Assembly.GetAssembly(typeof(Extensions.Compliance.Classification.DataClassification))!, - }, - new[] - { - code, - TestTaxonomy, - }, - new OptionsProvider()).ConfigureAwait(false); - - return d; - } } [Fact] @@ -120,30 +107,99 @@ public async Task MissingDataClassificationSymbol() { Source, }, - new OptionsProvider()) + new OptionsProvider(null)) .ConfigureAwait(false); Assert.Empty(d); } - private sealed class Options : AnalyzerConfigOptions + [Theory] + [CombinatorialData] + public async Task Should_EmitWarning_WhenPathUnavailable(bool isReportPathProvided) { - public override bool TryGetValue(string key, out string value) + var inputFile = Directory.GetFiles("TestClasses").First(); + var options = new Dictionary + { + ["build_property.outputpath"] = string.Empty + }; + + if (isReportPathProvided) + { + options.Add("build_property.ComplianceReportOutputPath", string.Empty); + } + + var diags = await RunGenerator(await File.ReadAllTextAsync(inputFile), options: options); + var diag = Assert.Single(diags); + Assert.Equal("AUDREPGEN001", diag.Id); + Assert.Equal(DiagnosticSeverity.Info, diag.Severity); + } + + [Fact] + public async Task Should_UseProjectDir_WhenOutputPathIsRelative() + { + var projectDir = Path.GetTempPath(); + var outputPath = Guid.NewGuid().ToString(); + var fullReportPath = Path.Combine(projectDir, outputPath); + Directory.CreateDirectory(fullReportPath); + + try { - if (key == "build_property.GenerateComplianceReport") + var inputFile = Directory.GetFiles("TestClasses").First(); + var options = new Dictionary { - value = bool.TrueString; - return true; - } + ["build_property.projectdir"] = projectDir, + ["build_property.outputpath"] = outputPath + }; - value = null!; - return false; + var diags = await RunGenerator(await File.ReadAllTextAsync(inputFile), options: options); + Assert.Empty(diags); + Assert.True(File.Exists(Path.Combine(fullReportPath, "ComplianceReport.json"))); } + finally + { + Directory.Delete(fullReportPath, recursive: true); + } + } + + private static async Task> RunGenerator(string code, string? outputFile = null, Dictionary? options = null) + { + var (d, _) = await RoslynTestUtils.RunGenerator( + new ComplianceReportsGenerator(outputFile), + new[] + { + Assembly.GetAssembly(typeof(ILogger))!, + Assembly.GetAssembly(typeof(LoggerMessageAttribute))!, + Assembly.GetAssembly(typeof(Extensions.Compliance.Classification.DataClassification))!, + }, + new[] + { + code, + TestTaxonomy, + }, + new OptionsProvider(analyzerOptions: options)).ConfigureAwait(false); + + return d; } - private sealed class OptionsProvider : AnalyzerConfigOptionsProvider + private sealed class Options : AnalyzerConfigOptions { - public override AnalyzerConfigOptions GlobalOptions => new Options(); + private readonly Dictionary _options; + + public Options(Dictionary? analyzerOptions) + { + _options = analyzerOptions ?? []; + _options.TryAdd("build_property.GenerateComplianceReport", bool.TrueString); + _options.TryAdd("build_property.outputpath", Directory.GetCurrentDirectory()); + } + + public override bool TryGetValue(string key, out string value) + => _options.TryGetValue(key, out value!); + } + + private sealed class OptionsProvider(Dictionary? analyzerOptions) : AnalyzerConfigOptionsProvider + { + public override AnalyzerConfigOptions GlobalOptions => new Options(analyzerOptions); + public override AnalyzerConfigOptions GetOptions(SyntaxTree tree) => throw new System.NotSupportedException(); public override AnalyzerConfigOptions GetOptions(AdditionalText textFile) => throw new System.NotSupportedException(); } diff --git a/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs b/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs index 40cc370608f..3dad924655a 100644 --- a/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs +++ b/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs @@ -35,17 +35,18 @@ public void GeneratorShouldNotDoAnythingIfGeneralExecutionContextDoesNotHaveClas [CombinatorialData] public async Task TestAll(bool useExplicitReportPath) { + Dictionary? options = useExplicitReportPath + ? new() { ["build_property.MetricsReportOutputPath"] = Directory.GetCurrentDirectory() } + : null; + foreach (var inputFile in Directory.GetFiles("TestClasses")) { var stem = Path.GetFileNameWithoutExtension(inputFile); - var goldenReportPath = Path.Combine("GoldenReports", Path.ChangeExtension(stem, ".json")); + var goldenFileName = Path.ChangeExtension(stem, ".json"); + var goldenReportPath = Path.Combine("GoldenReports", goldenFileName); var generatedReportPath = Path.Combine(Directory.GetCurrentDirectory(), ReportFilename); - Dictionary? options = useExplicitReportPath - ? new() { ["build_property.MetricsReportOutputPath"] = Directory.GetCurrentDirectory() } - : null; - if (File.Exists(goldenReportPath)) { var d = await RunGenerator(await File.ReadAllTextAsync(inputFile), options); @@ -56,7 +57,7 @@ public async Task TestAll(bool useExplicitReportPath) if (golden != generated) { - output.WriteLine($"MISMATCH: goldenReportFile {goldenReportPath}, tmp {generatedReportPath}"); + output.WriteLine($"MISMATCH: golden report {goldenReportPath}, generated {generatedReportPath}"); output.WriteLine("----"); output.WriteLine("golden:"); output.WriteLine(golden); @@ -73,8 +74,7 @@ public async Task TestAll(bool useExplicitReportPath) { // generate the golden file if it doesn't already exist output.WriteLine($"Generating golden report: {goldenReportPath}"); - _ = await RunGenerator(await File.ReadAllTextAsync(inputFile), options); - File.Copy(generatedReportPath, goldenReportPath); + _ = await RunGenerator(await File.ReadAllTextAsync(inputFile), options, reportFileName: goldenFileName); } } } @@ -145,7 +145,8 @@ public async Task Should_UseProjectDir_WhenOutputPathIsRelative() private static async Task> RunGenerator( string code, Dictionary? analyzerOptions = null, - CancellationToken cancellationToken = default) + CancellationToken cancellationToken = default, + string? reportFileName = null) { Assembly[] refs = [ @@ -156,7 +157,7 @@ private static async Task> RunGenerator( ]; var (d, _) = await RoslynTestUtils.RunGenerator( - new MetricsReportsGenerator(), + new MetricsReportsGenerator(reportFileName), refs, new[] { code }, new OptionsProvider(analyzerOptions), From 11226ba8ee40afefd198d3994c427ee73fbf0aa8 Mon Sep 17 00:00:00 2001 From: Nikita Balabaev Date: Tue, 5 Mar 2024 10:50:03 +0100 Subject: [PATCH 8/9] fixes --- .../Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs b/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs index 3dad924655a..f432257b111 100644 --- a/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs +++ b/test/Generators/Microsoft.Gen.MetricsReports/Unit/GeneratorTests.cs @@ -156,8 +156,12 @@ private static async Task> RunGenerator( Assembly.GetAssembly(typeof(GaugeAttribute))! ]; + var generator = reportFileName is null + ? new MetricsReportsGenerator() + : new MetricsReportsGenerator(reportFileName); + var (d, _) = await RoslynTestUtils.RunGenerator( - new MetricsReportsGenerator(reportFileName), + generator, refs, new[] { code }, new OptionsProvider(analyzerOptions), From fec243e19cfe5978d41e8c1e9b48fd383da7be29 Mon Sep 17 00:00:00 2001 From: Nikita Balabaev Date: Tue, 5 Mar 2024 10:57:24 +0100 Subject: [PATCH 9/9] fix golden report --- .../MeterDimensionsAttributedWithXmlDescriptions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeterDimensionsAttributedWithXmlDescriptions.json b/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeterDimensionsAttributedWithXmlDescriptions.json index 1e09012dfac..aec09194f8a 100644 --- a/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeterDimensionsAttributedWithXmlDescriptions.json +++ b/test/Generators/Microsoft.Gen.MetricsReports/GoldenReports/MeterDimensionsAttributedWithXmlDescriptions.json @@ -36,4 +36,4 @@ } ] } -] +] \ No newline at end of file