From 06f97c16890101095b83ca680659a7f1a8aa976b Mon Sep 17 00:00:00 2001
From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com>
Date: Wed, 14 Aug 2024 10:47:54 +0200
Subject: [PATCH 01/10] initial commit
---
.../IResourceUtilizationPublisher.cs | 2 ++
.../ResourceMonitorBuilder.cs | 2 ++
.../ResourceMonitorService.cs | 6 ++++++
.../ResourceUtilizationInstruments.cs | 3 ---
.../Linux/AcceptanceTest.cs | 4 ++++
.../Linux/Resources/GenericPublisher.cs | 1 +
.../Publishers/AnotherPublisher.cs | 2 ++
.../Publishers/EmptyPublisher.cs | 4 +++-
.../Publishers/FaultPublisher.cs | 1 +
.../Publishers/GenericPublisher.cs | 1 +
.../ResourceMonitoringBuilderTests.cs | 1 +
.../ResourceMonitoringExtensionsTests.cs | 1 +
.../ResourceMonitoringServiceTests.cs | 7 ++++---
.../Resilience/RequestMessageSnapshotTests.cs | 1 -
14 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs
index 5476fcdad05..c8fead4616e 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.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.Threading;
using System.Threading.Tasks;
@@ -9,6 +10,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring;
///
/// Defines the contract for a resource utilization publisher that gets invoked whenever resource utilization is computed.
///
+[Obsolete("This interface is obsolete. Instead, use observable instruments from Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceUtilizationInstruments.")]
public interface IResourceUtilizationPublisher
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs
index 4f9f5c9284f..d8d7303dbe4 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.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.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
@@ -21,6 +22,7 @@ public ResourceMonitorBuilder(IServiceCollection services)
Services = services;
}
+ [Obsolete("This method is obsolete. Instead, use observable instruments from Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceUtilizationInstruments.")]
public IResourceMonitorBuilder AddPublisher<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>()
where T : class, IResourceUtilizationPublisher
{
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs
index cafb216e993..52bb94d44e6 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs
@@ -29,10 +29,12 @@ internal sealed class ResourceMonitorService : BackgroundService, IResourceMonit
///
private readonly ISnapshotProvider _provider;
+#pragma warning disable CS0618 // Type or member is obsolete
///
/// The publishers to use with the data we are tracking.
///
private readonly IResourceUtilizationPublisher[] _publishers;
+#pragma warning restore CS0618 // Type or member is obsolete
///
/// Logger to be used in this class.
@@ -55,7 +57,9 @@ public ResourceMonitorService(
ISnapshotProvider provider,
ILogger logger,
IOptions options,
+#pragma warning disable CS0618 // Type or member is obsolete
IEnumerable publishers)
+#pragma warning restore CS0618 // Type or member is obsolete
: this(provider, logger, options, publishers, TimeProvider.System)
{
}
@@ -64,7 +68,9 @@ internal ResourceMonitorService(
ISnapshotProvider provider,
ILogger logger,
IOptions options,
+#pragma warning disable CS0618 // Type or member is obsolete
IEnumerable publishers,
+#pragma warning restore CS0618 // Type or member is obsolete
TimeProvider timeProvider)
{
_provider = provider;
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationInstruments.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationInstruments.cs
index aa3fd012029..d1f1385f20c 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationInstruments.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationInstruments.cs
@@ -8,9 +8,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring;
///
/// Represents the names of instruments published by this package.
///
-///
-/// These metrics are currently only published on Linux.
-///
///
internal static class ResourceUtilizationInstruments
{
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs
index 5611ad8ec00..7536a7c9f15 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs
@@ -229,7 +229,9 @@ public Task ResourceUtilizationTracker_And_Metrics_Report_Same_Values_With_Cgrou
.AddSingleton(clock)
.AddSingleton(new FakeUserHz(100))
.AddSingleton(fileSystem)
+#pragma warning disable CS0618 // Type or member is obsolete
.AddSingleton(new GenericPublisher(_ => e.Set()))
+#pragma warning restore CS0618 // Type or member is obsolete
.AddResourceMonitoring())
.Build();
@@ -312,7 +314,9 @@ public Task ResourceUtilizationTracker_And_Metrics_Report_Same_Values_With_Cgrou
.AddSingleton(clock)
.AddSingleton(new FakeUserHz(100))
.AddSingleton(fileSystem)
+#pragma warning disable CS0618 // Type or member is obsolete
.AddSingleton(new GenericPublisher(_ => e.Set()))
+#pragma warning restore CS0618 // Type or member is obsolete
.AddResourceMonitoring()
.Replace(ServiceDescriptor.Singleton()))
.Build();
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs
index 1bb73a44d03..ec179e4c845 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs
@@ -10,6 +10,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Linux.Test;
///
/// A publisher that accept in its constructor.
///
+[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")]
internal sealed class GenericPublisher : IResourceUtilizationPublisher
{
private readonly Action _publish;
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs
index a0f2805dc5f..f37b72c78df 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.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.Threading;
using System.Threading.Tasks;
@@ -9,6 +10,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers;
///
/// Another publisher that do nothing, added to test scenarios where multiple publishers are added to the services collections.
///
+[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")]
internal sealed class AnotherPublisher : IResourceUtilizationPublisher
{
///
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs
index 85c03212ee6..5c5082d9f60 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs
@@ -1,14 +1,16 @@
// 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.Threading;
using System.Threading.Tasks;
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers;
///
-/// A publisher that do nothing.
+/// A publisher that does nothing.
///
+[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")]
internal sealed class EmptyPublisher : IResourceUtilizationPublisher
{
///
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs
index 7a7e6502c32..1292788f738 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs
@@ -10,6 +10,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers;
///
/// A publisher that throws an error.
///
+[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")]
internal sealed class FaultPublisher : IResourceUtilizationPublisher
{
///
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs
index 6d9e716fc7f..220b06221d9 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs
@@ -10,6 +10,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers;
///
/// A publisher that accept in its constructor.
///
+[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")]
internal sealed class GenericPublisher : IResourceUtilizationPublisher
{
private readonly Action _publish;
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs
index 4247b390711..f0808e35ef0 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs
@@ -8,6 +8,7 @@
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test;
+#pragma warning disable CS0618 // Type or member is obsolete - IResourceUtilizationPublisher is obsolete, but we still need code coverage.
public sealed class ResourceMonitoringBuilderTests
{
[Fact]
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs
index 447c9d4c827..428847403e0 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs
@@ -15,6 +15,7 @@
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test;
+#pragma warning disable CS0618 // Type or member is obsolete - IResourceUtilizationPublisher is obsolete, but we still need code coverage.
public sealed class ResourceMonitoringExtensionsTests
{
[Fact]
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs
index 6de754a2366..f6c67d273c4 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs
@@ -21,6 +21,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test;
///
/// Tests for the DataTracker class.
///
+#pragma warning disable CS0618 // Type or member is obsolete - IResourceUtilizationPublisher is obsolete, but we still need code coverage.
public sealed class ResourceMonitoringServiceTests
{
private const string ProviderUnableToGatherData = "Unable to gather utilization statistics.";
@@ -32,7 +33,7 @@ public sealed class ResourceMonitoringServiceTests
///
/// Simply construct the object.
///
- /// Tests that look into internals like this are evil. Consider removing long term.
+ /// Tests that look into internals like this are evil. Consider removing long term.
[Fact]
public void BasicConstructor()
{
@@ -75,7 +76,7 @@ public void BasicConstructor_NullOptions_Throws()
///
/// Simply construct the object (publisher constructor).
///
- /// Tests that look into internals like this are evil. Consider removing long term.
+ /// Tests that look into internals like this are evil. Consider removing long term.
[Fact]
public void BasicConstructor_NullPublishers_Throws()
{
@@ -293,7 +294,7 @@ public async Task RunTrackerAsync_IfPublisherThrows_LogsError()
///
/// Validate that the tracker invokes the publisher's Publish method.
///
- /// Tests that look into internals like this are evil. Consider removing long term.
+ /// Tests that look into internals like this are evil. Consider removing long term.
[Fact]
public async Task ResourceUtilizationTracker_InitializedProperly_InvokesPublishers()
{
diff --git a/test/Libraries/Microsoft.Extensions.Http.Resilience.Tests/Resilience/RequestMessageSnapshotTests.cs b/test/Libraries/Microsoft.Extensions.Http.Resilience.Tests/Resilience/RequestMessageSnapshotTests.cs
index 4a5214f2a40..742822f73e7 100644
--- a/test/Libraries/Microsoft.Extensions.Http.Resilience.Tests/Resilience/RequestMessageSnapshotTests.cs
+++ b/test/Libraries/Microsoft.Extensions.Http.Resilience.Tests/Resilience/RequestMessageSnapshotTests.cs
@@ -11,7 +11,6 @@
namespace Microsoft.Extensions.Http.Resilience.Test.Resilience;
-#pragma warning disable CS0618 // Type or member is obsolete
#pragma warning disable CS0618 // Type or member is obsolete
public class RequestMessageSnapshotTests
From 179e064fadcb6b74f18258cfbad4b713af610dd5 Mon Sep 17 00:00:00 2001
From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com>
Date: Wed, 14 Aug 2024 10:48:05 +0200
Subject: [PATCH 02/10] remove unnecessary suppression
---
.../Windows/Log.cs | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Log.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Log.cs
index 9be79e1851b..78c19524f75 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Log.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Log.cs
@@ -6,7 +6,6 @@
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Windows;
#pragma warning disable S109
-#pragma warning disable IDE0060 // Remove unused parameters - Reason: used by source generator.
internal static partial class Log
{
From 8b898b24ae652c1309c1da6ae8a4f94e0b474da4 Mon Sep 17 00:00:00 2001
From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com>
Date: Wed, 14 Aug 2024 11:46:51 +0200
Subject: [PATCH 03/10] update
---
.../IResourceMonitorBuilder.cs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs
index 4890ea1bd1a..2f1a0b6d366 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.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.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.DependencyInjection;
@@ -21,6 +22,7 @@ public interface IResourceMonitorBuilder
///
/// The publisher's implementation type.
/// The value of the object instance.
+ [Obsolete("This method is obsolete. Instead of IResourceUtilizationPublisher use observable instruments from Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceUtilizationInstruments.")]
IResourceMonitorBuilder AddPublisher<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>()
where T : class, IResourceUtilizationPublisher;
}
From ed4fcd1227cea81a4baa6a9c365da166f05fcce4 Mon Sep 17 00:00:00 2001
From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com>
Date: Thu, 22 Aug 2024 12:59:59 +0200
Subject: [PATCH 04/10] Deprecate the API using the new diagnostic ID
---
Directory.Build.targets | 3 ++
docs/list-of-diagnostics.md | 10 +++++
eng/MSBuild/LegacySupport.props | 4 ++
.../ObsoleteAttribute/ObsoleteAttribute.cs | 45 +++++++++++++++++++
src/LegacySupport/ObsoleteAttribute/README.md | 7 +++
.../IResourceMonitorBuilder.cs | 8 +++-
.../IResourceUtilizationPublisher.cs | 8 +++-
...ions.Diagnostics.ResourceMonitoring.csproj | 1 +
.../ResourceMonitorBuilder.cs | 8 +++-
.../ResourceMonitorService.cs | 6 ---
src/Shared/DiagnosticIds/DiagnosticIds.cs | 5 +++
.../Linux/AcceptanceTest.cs | 2 -
.../Linux/Resources/GenericPublisher.cs | 1 -
.../Publishers/AnotherPublisher.cs | 2 -
.../Publishers/EmptyPublisher.cs | 2 -
.../Publishers/FaultPublisher.cs | 1 -
.../Publishers/GenericPublisher.cs | 1 -
.../ResourceMonitoringBuilderTests.cs | 1 -
.../ResourceMonitoringExtensionsTests.cs | 1 -
.../ResourceMonitoringServiceTests.cs | 1 -
20 files changed, 96 insertions(+), 21 deletions(-)
create mode 100644 src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs
create mode 100644 src/LegacySupport/ObsoleteAttribute/README.md
diff --git a/Directory.Build.targets b/Directory.Build.targets
index bcf3171ca0d..cd5fab65acb 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -22,6 +22,9 @@
$(NoWarn);EXTEXP0001;EXTEXP0002;EXTEXP0003;EXTEXP0004;EXTEXP0005;EXTEXP0006;EXTEXP0007;EXTEXP0008;EXTEXP0009;EXTEXP0010;EXTEXP0011;EXTEXP0012;EXTEXP0013;EXTEXP0014;EXTEXP0015;EXTEXP0016;EXTEXP0017
+
+ $(NoWarn);EXTOBS0001;
+
$(NoWarn);NU5104
diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md
index f540a808699..778625a8d64 100644
--- a/docs/list-of-diagnostics.md
+++ b/docs/list-of-diagnostics.md
@@ -41,6 +41,16 @@ if desired.
| `EXTEXP0016` | Hosting integration testing experiments |
| `EXTEXP0017` | Contextual options experiments |
+# Obsoletions
+
+At some point in its lifecycle APIs become obsolete. If you use obsolete APIs, you will get one of the diagnostic shown below.
+
+You may continue using obsolete APIs in your application, but we advise exploring proposed alternatives which you will find in the obsoletion message.
+
+| Diagnostic ID | Description |
+| :---------------- | :---------- |
+| `EXTOBS0001` | Resource monitoring obsoletions |
+
# LoggerMessage
| Diagnostic ID | Description |
diff --git a/eng/MSBuild/LegacySupport.props b/eng/MSBuild/LegacySupport.props
index 11e7aa6c0f5..c96a83d34d6 100644
--- a/eng/MSBuild/LegacySupport.props
+++ b/eng/MSBuild/LegacySupport.props
@@ -50,4 +50,8 @@
+
+
+
+
diff --git a/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs b/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs
new file mode 100644
index 00000000000..573222e6d3e
--- /dev/null
+++ b/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs
@@ -0,0 +1,45 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+#if !NET5_0_OR_GREATER
+
+using System.Diagnostics.CodeAnalysis;
+
+namespace System;
+
+///
+/// Marks program elements that are no longer in use.
+///
+[ExcludeFromCodeCoverage]
+[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum |
+ AttributeTargets.Interface | AttributeTargets.Constructor | AttributeTargets.Method |
+ AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event |
+ AttributeTargets.Delegate,
+ Inherited = false)]
+internal sealed class ObsoleteAttribute : Attribute
+{
+ public ObsoleteAttribute()
+ {
+ }
+
+ public ObsoleteAttribute(string? message)
+ {
+ Message = message;
+ }
+
+ public ObsoleteAttribute(string? message, bool error)
+ {
+ Message = message;
+ IsError = error;
+ }
+
+ public string? Message { get; }
+
+ public bool IsError { get; }
+
+ public string? DiagnosticId { get; set; }
+
+ public string? UrlFormat { get; set; }
+}
+
+#endif
diff --git a/src/LegacySupport/ObsoleteAttribute/README.md b/src/LegacySupport/ObsoleteAttribute/README.md
new file mode 100644
index 00000000000..f667dfcf1e7
--- /dev/null
+++ b/src/LegacySupport/ObsoleteAttribute/README.md
@@ -0,0 +1,7 @@
+To use this source in your project, add the following to your `.csproj` file:
+
+```xml
+
+ true
+
+```
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs
index 2f1a0b6d366..01cb3fd3505 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs
@@ -4,6 +4,7 @@
using System;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring;
@@ -22,7 +23,12 @@ public interface IResourceMonitorBuilder
///
/// The publisher's implementation type.
/// The value of the object instance.
- [Obsolete("This method is obsolete. Instead of IResourceUtilizationPublisher use observable instruments from Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceUtilizationInstruments.")]
+#if !NET5_0_OR_GREATER
+#pragma warning disable CS0436 // Type conflicts with imported type
+#endif
+ [Obsolete("This method is obsolete and will be removed in a future version. Consider using observable instruments.",
+ DiagnosticId = DiagnosticIds.Obsoletions.ResourceMonitoring,
+ UrlFormat = DiagnosticIds.UrlFormat)]
IResourceMonitorBuilder AddPublisher<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>()
where T : class, IResourceUtilizationPublisher;
}
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs
index c8fead4616e..3990c714707 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs
@@ -4,13 +4,19 @@
using System;
using System.Threading;
using System.Threading.Tasks;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring;
///
/// Defines the contract for a resource utilization publisher that gets invoked whenever resource utilization is computed.
///
-[Obsolete("This interface is obsolete. Instead, use observable instruments from Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceUtilizationInstruments.")]
+#if !NET5_0_OR_GREATER
+#pragma warning disable CS0436 // Type conflicts with imported type
+#endif
+[Obsolete("This API is obsolete and will be removed in a future version. Consider using observable instruments.",
+ DiagnosticId = DiagnosticIds.Obsoletions.ResourceMonitoring,
+ UrlFormat = DiagnosticIds.UrlFormat)]
public interface IResourceUtilizationPublisher
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj
index beffa2e9ac8..c71fddc3a5c 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Microsoft.Extensions.Diagnostics.ResourceMonitoring.csproj
@@ -12,6 +12,7 @@
true
true
true
+ true
true
true
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs
index d8d7303dbe4..c64828b73f2 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs
@@ -6,6 +6,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting;
+using Microsoft.Shared.DiagnosticIds;
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring;
@@ -22,7 +23,12 @@ public ResourceMonitorBuilder(IServiceCollection services)
Services = services;
}
- [Obsolete("This method is obsolete. Instead, use observable instruments from Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceUtilizationInstruments.")]
+#if !NET5_0_OR_GREATER
+#pragma warning disable CS0436 // Type conflicts with imported type
+#endif
+ [Obsolete("This API is obsolete and will be removed in a future version. Consider using observable instruments.",
+ DiagnosticId = DiagnosticIds.Obsoletions.ResourceMonitoring,
+ UrlFormat = DiagnosticIds.UrlFormat)]
public IResourceMonitorBuilder AddPublisher<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>()
where T : class, IResourceUtilizationPublisher
{
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs
index 52bb94d44e6..cafb216e993 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorService.cs
@@ -29,12 +29,10 @@ internal sealed class ResourceMonitorService : BackgroundService, IResourceMonit
///
private readonly ISnapshotProvider _provider;
-#pragma warning disable CS0618 // Type or member is obsolete
///
/// The publishers to use with the data we are tracking.
///
private readonly IResourceUtilizationPublisher[] _publishers;
-#pragma warning restore CS0618 // Type or member is obsolete
///
/// Logger to be used in this class.
@@ -57,9 +55,7 @@ public ResourceMonitorService(
ISnapshotProvider provider,
ILogger logger,
IOptions options,
-#pragma warning disable CS0618 // Type or member is obsolete
IEnumerable publishers)
-#pragma warning restore CS0618 // Type or member is obsolete
: this(provider, logger, options, publishers, TimeProvider.System)
{
}
@@ -68,9 +64,7 @@ internal ResourceMonitorService(
ISnapshotProvider provider,
ILogger logger,
IOptions options,
-#pragma warning disable CS0618 // Type or member is obsolete
IEnumerable publishers,
-#pragma warning restore CS0618 // Type or member is obsolete
TimeProvider timeProvider)
{
_provider = provider;
diff --git a/src/Shared/DiagnosticIds/DiagnosticIds.cs b/src/Shared/DiagnosticIds/DiagnosticIds.cs
index 343093e6f44..9330746c71a 100644
--- a/src/Shared/DiagnosticIds/DiagnosticIds.cs
+++ b/src/Shared/DiagnosticIds/DiagnosticIds.cs
@@ -117,6 +117,11 @@ internal static class AuditReports
internal const string AUDREPGEN000 = nameof(AUDREPGEN000);
internal const string AUDREPGEN001 = nameof(AUDREPGEN001);
}
+
+ internal static class Obsoletions
+ {
+ internal const string ResourceMonitoring = "EXTOBS0001";
+ }
}
#pragma warning restore S1144
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs
index 7536a7c9f15..ac0108842f1 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs
@@ -229,9 +229,7 @@ public Task ResourceUtilizationTracker_And_Metrics_Report_Same_Values_With_Cgrou
.AddSingleton(clock)
.AddSingleton(new FakeUserHz(100))
.AddSingleton(fileSystem)
-#pragma warning disable CS0618 // Type or member is obsolete
.AddSingleton(new GenericPublisher(_ => e.Set()))
-#pragma warning restore CS0618 // Type or member is obsolete
.AddResourceMonitoring())
.Build();
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs
index ec179e4c845..1bb73a44d03 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/Resources/GenericPublisher.cs
@@ -10,7 +10,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Linux.Test;
///
/// A publisher that accept in its constructor.
///
-[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")]
internal sealed class GenericPublisher : IResourceUtilizationPublisher
{
private readonly Action _publish;
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs
index f37b72c78df..a0f2805dc5f 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/AnotherPublisher.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.Threading;
using System.Threading.Tasks;
@@ -10,7 +9,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers;
///
/// Another publisher that do nothing, added to test scenarios where multiple publishers are added to the services collections.
///
-[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")]
internal sealed class AnotherPublisher : IResourceUtilizationPublisher
{
///
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs
index 5c5082d9f60..74af8d013a9 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/EmptyPublisher.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.Threading;
using System.Threading.Tasks;
@@ -10,7 +9,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers;
///
/// A publisher that does nothing.
///
-[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")]
internal sealed class EmptyPublisher : IResourceUtilizationPublisher
{
///
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs
index 1292788f738..7a7e6502c32 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/FaultPublisher.cs
@@ -10,7 +10,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers;
///
/// A publisher that throws an error.
///
-[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")]
internal sealed class FaultPublisher : IResourceUtilizationPublisher
{
///
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs
index 220b06221d9..6d9e716fc7f 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Publishers/GenericPublisher.cs
@@ -10,7 +10,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test.Publishers;
///
/// A publisher that accept in its constructor.
///
-[Obsolete("Testing the obsolete IResourceUtilizationPublisher interface.")]
internal sealed class GenericPublisher : IResourceUtilizationPublisher
{
private readonly Action _publish;
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs
index f0808e35ef0..4247b390711 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringBuilderTests.cs
@@ -8,7 +8,6 @@
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test;
-#pragma warning disable CS0618 // Type or member is obsolete - IResourceUtilizationPublisher is obsolete, but we still need code coverage.
public sealed class ResourceMonitoringBuilderTests
{
[Fact]
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs
index 428847403e0..447c9d4c827 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringExtensionsTests.cs
@@ -15,7 +15,6 @@
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test;
-#pragma warning disable CS0618 // Type or member is obsolete - IResourceUtilizationPublisher is obsolete, but we still need code coverage.
public sealed class ResourceMonitoringExtensionsTests
{
[Fact]
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs
index f6c67d273c4..9ebeb3e6788 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/ResourceMonitoringServiceTests.cs
@@ -21,7 +21,6 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Test;
///
/// Tests for the DataTracker class.
///
-#pragma warning disable CS0618 // Type or member is obsolete - IResourceUtilizationPublisher is obsolete, but we still need code coverage.
public sealed class ResourceMonitoringServiceTests
{
private const string ProviderUnableToGatherData = "Unable to gather utilization statistics.";
From c1733ccd5360f3389af5206177e3e8dc9e654553 Mon Sep 17 00:00:00 2001
From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com>
Date: Thu, 22 Aug 2024 13:02:43 +0200
Subject: [PATCH 05/10] Remove unncessary suppression
---
.../Linux/AcceptanceTest.cs | 2 --
1 file changed, 2 deletions(-)
diff --git a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs
index ac0108842f1..5611ad8ec00 100644
--- a/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs
+++ b/test/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring.Tests/Linux/AcceptanceTest.cs
@@ -312,9 +312,7 @@ public Task ResourceUtilizationTracker_And_Metrics_Report_Same_Values_With_Cgrou
.AddSingleton(clock)
.AddSingleton(new FakeUserHz(100))
.AddSingleton(fileSystem)
-#pragma warning disable CS0618 // Type or member is obsolete
.AddSingleton(new GenericPublisher(_ => e.Set()))
-#pragma warning restore CS0618 // Type or member is obsolete
.AddResourceMonitoring()
.Replace(ServiceDescriptor.Singleton()))
.Build();
From bcb7157360cd812f8e8b3ef4b4e411f5af1ac826 Mon Sep 17 00:00:00 2001
From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com>
Date: Thu, 22 Aug 2024 13:08:11 +0200
Subject: [PATCH 06/10] Update text
---
docs/list-of-diagnostics.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md
index 778625a8d64..dfbb66535ba 100644
--- a/docs/list-of-diagnostics.md
+++ b/docs/list-of-diagnostics.md
@@ -49,7 +49,7 @@ You may continue using obsolete APIs in your application, but we advise explorin
| Diagnostic ID | Description |
| :---------------- | :---------- |
-| `EXTOBS0001` | Resource monitoring obsoletions |
+| `EXTOBS0001` | IResourceUtilizationPublisher obsoletions |
# LoggerMessage
From ccd6c80c89c9fe3f287e97d5e0cd29c854ae268b Mon Sep 17 00:00:00 2001
From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com>
Date: Thu, 22 Aug 2024 13:11:49 +0200
Subject: [PATCH 07/10] update doc
---
docs/list-of-diagnostics.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md
index dfbb66535ba..f87fc1b28d0 100644
--- a/docs/list-of-diagnostics.md
+++ b/docs/list-of-diagnostics.md
@@ -49,7 +49,7 @@ You may continue using obsolete APIs in your application, but we advise explorin
| Diagnostic ID | Description |
| :---------------- | :---------- |
-| `EXTOBS0001` | IResourceUtilizationPublisher obsoletions |
+| `EXTOBS0001` | IResourceUtilizationPublisher obsoletions. Please use observable instruments from [here](https://github.com/dotnet/extensions/blob/6e0195db97d66cdf082e32799858c34bf5fd0cdb/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationInstruments.cs). |
# LoggerMessage
From e74cf16be58dcc468ac08dc487ddfd5db39d5b0f Mon Sep 17 00:00:00 2001
From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com>
Date: Thu, 22 Aug 2024 13:40:12 +0200
Subject: [PATCH 08/10] Fix warnings
---
src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs b/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs
index 573222e6d3e..3f75ef56ba3 100644
--- a/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs
+++ b/src/LegacySupport/ObsoleteAttribute/ObsoleteAttribute.cs
@@ -10,6 +10,13 @@ namespace System;
///
/// Marks program elements that are no longer in use.
///
+///
+/// Source code imported from
+///
+/// ObsoleteAttribute.cs without any changes, all resulting warnings ignored accordingly.
+///
+#pragma warning disable CA1019 // Define accessors for attribute arguments
+#pragma warning disable S3996 // URI properties should not be strings
[ExcludeFromCodeCoverage]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum |
AttributeTargets.Interface | AttributeTargets.Constructor | AttributeTargets.Method |
From b79aff3207d089521a401b179d2bb9533972d840 Mon Sep 17 00:00:00 2001
From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com>
Date: Fri, 23 Aug 2024 11:22:57 +0200
Subject: [PATCH 09/10] PR comments
---
docs/list-of-diagnostics.md | 2 +-
.../IResourceMonitorBuilder.cs | 4 ++--
.../IResourceUtilizationPublisher.cs | 4 ++--
.../ResourceMonitorBuilder.cs | 4 ++--
src/Shared/DiagnosticIds/DiagnosticIds.cs | 3 ++-
5 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md
index f87fc1b28d0..54866a3d0d3 100644
--- a/docs/list-of-diagnostics.md
+++ b/docs/list-of-diagnostics.md
@@ -49,7 +49,7 @@ You may continue using obsolete APIs in your application, but we advise explorin
| Diagnostic ID | Description |
| :---------------- | :---------- |
-| `EXTOBS0001` | IResourceUtilizationPublisher obsoletions. Please use observable instruments from [here](https://github.com/dotnet/extensions/blob/6e0195db97d66cdf082e32799858c34bf5fd0cdb/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceUtilizationInstruments.cs). |
+| `EXTOBS0001` | This API is obsolete and will be removed in a future version. Consider using Resource Monitoring observable [instruments](https://learn.microsoft.com/dotnet/core/diagnostics/built-in-metrics-diagnostics#microsoftextensionsdiagnosticsresourcemonitoring). |
# LoggerMessage
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs
index 01cb3fd3505..d2f6800d4f5 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceMonitorBuilder.cs
@@ -26,8 +26,8 @@ public interface IResourceMonitorBuilder
#if !NET5_0_OR_GREATER
#pragma warning disable CS0436 // Type conflicts with imported type
#endif
- [Obsolete("This method is obsolete and will be removed in a future version. Consider using observable instruments.",
- DiagnosticId = DiagnosticIds.Obsoletions.ResourceMonitoring,
+ [Obsolete(DiagnosticIds.Obsoletions.IResourceUtilizationPublisherMessage,
+ DiagnosticId = DiagnosticIds.Obsoletions.IResourceUtilizationPublisherDiagId,
UrlFormat = DiagnosticIds.UrlFormat)]
IResourceMonitorBuilder AddPublisher<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>()
where T : class, IResourceUtilizationPublisher;
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs
index 3990c714707..152d5fdb973 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/IResourceUtilizationPublisher.cs
@@ -14,8 +14,8 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring;
#if !NET5_0_OR_GREATER
#pragma warning disable CS0436 // Type conflicts with imported type
#endif
-[Obsolete("This API is obsolete and will be removed in a future version. Consider using observable instruments.",
- DiagnosticId = DiagnosticIds.Obsoletions.ResourceMonitoring,
+[Obsolete(DiagnosticIds.Obsoletions.IResourceUtilizationPublisherMessage,
+ DiagnosticId = DiagnosticIds.Obsoletions.IResourceUtilizationPublisherDiagId,
UrlFormat = DiagnosticIds.UrlFormat)]
public interface IResourceUtilizationPublisher
{
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs
index c64828b73f2..acd947c982b 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitorBuilder.cs
@@ -26,8 +26,8 @@ public ResourceMonitorBuilder(IServiceCollection services)
#if !NET5_0_OR_GREATER
#pragma warning disable CS0436 // Type conflicts with imported type
#endif
- [Obsolete("This API is obsolete and will be removed in a future version. Consider using observable instruments.",
- DiagnosticId = DiagnosticIds.Obsoletions.ResourceMonitoring,
+ [Obsolete(DiagnosticIds.Obsoletions.IResourceUtilizationPublisherMessage,
+ DiagnosticId = DiagnosticIds.Obsoletions.IResourceUtilizationPublisherDiagId,
UrlFormat = DiagnosticIds.UrlFormat)]
public IResourceMonitorBuilder AddPublisher<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] T>()
where T : class, IResourceUtilizationPublisher
diff --git a/src/Shared/DiagnosticIds/DiagnosticIds.cs b/src/Shared/DiagnosticIds/DiagnosticIds.cs
index 9330746c71a..ce3b2ca9d18 100644
--- a/src/Shared/DiagnosticIds/DiagnosticIds.cs
+++ b/src/Shared/DiagnosticIds/DiagnosticIds.cs
@@ -120,7 +120,8 @@ internal static class AuditReports
internal static class Obsoletions
{
- internal const string ResourceMonitoring = "EXTOBS0001";
+ internal const string IResourceUtilizationPublisherDiagId = "EXTOBS0001";
+ internal const string IResourceUtilizationPublisherMessage = "This API is obsolete and will be removed in a future version. Consider using Resource Monitoring observable instruments.";
}
}
From 5b405a2253aa2fe3ab8a4670db9fdc2411432e31 Mon Sep 17 00:00:00 2001
From: evgenyfedorov2 <25526458+evgenyfedorov2@users.noreply.github.com>
Date: Fri, 23 Aug 2024 11:23:55 +0200
Subject: [PATCH 10/10] update link
---
docs/list-of-diagnostics.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/list-of-diagnostics.md b/docs/list-of-diagnostics.md
index 54866a3d0d3..45c468db518 100644
--- a/docs/list-of-diagnostics.md
+++ b/docs/list-of-diagnostics.md
@@ -49,7 +49,7 @@ You may continue using obsolete APIs in your application, but we advise explorin
| Diagnostic ID | Description |
| :---------------- | :---------- |
-| `EXTOBS0001` | This API is obsolete and will be removed in a future version. Consider using Resource Monitoring observable [instruments](https://learn.microsoft.com/dotnet/core/diagnostics/built-in-metrics-diagnostics#microsoftextensionsdiagnosticsresourcemonitoring). |
+| `EXTOBS0001` | This API is obsolete and will be removed in a future version. Consider using [Resource Monitoring observable instruments](https://learn.microsoft.com/dotnet/core/diagnostics/built-in-metrics-diagnostics#microsoftextensionsdiagnosticsresourcemonitoring). |
# LoggerMessage