diff --git a/Directory.Build.targets b/Directory.Build.targets
index c96d110b2dd..ff17457a836 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -16,7 +16,17 @@
false
-
+
+ $(NoWarn);CS0436
+
+
$(NoWarn);IL2026;IL2087;IL2067;IL2075;IL2091;IL2072;IL2090;CA1825;IL2070;IL2098;IL2057
@@ -35,14 +45,14 @@
$(NoWarn);CA1062
-
+
$(NoWarn);ASP0019
-
+
$(NoWarn);RS1024
@@ -66,7 +76,9 @@
-
+
+ <_Parameter1>TBD
+
diff --git a/eng/MSBuild/Generators.props b/eng/MSBuild/Generators.props
index 580c36c5592..52f47521cfe 100644
--- a/eng/MSBuild/Generators.props
+++ b/eng/MSBuild/Generators.props
@@ -7,10 +7,6 @@
-
-
-
-
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index f7e546395fc..cd7146dc124 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,168 +1,168 @@
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/runtime
- 171a525880315369e48c6adf6c181f98357352a5
+ eaa9717d90115cea43b4cdd7a2a49e6d3c3d780e
-
+
https://github.com/dotnet/aspnetcore
- d1f00b02ef24762bca23653fd963629749743334
+ 9c664bc65a52bc959138ec76c0250874fb38174d
-
+
https://github.com/dotnet/aspnetcore
- d1f00b02ef24762bca23653fd963629749743334
+ 9c664bc65a52bc959138ec76c0250874fb38174d
-
+
https://github.com/dotnet/aspnetcore
- d1f00b02ef24762bca23653fd963629749743334
+ 9c664bc65a52bc959138ec76c0250874fb38174d
-
+
https://github.com/dotnet/aspnetcore
- d1f00b02ef24762bca23653fd963629749743334
+ 9c664bc65a52bc959138ec76c0250874fb38174d
-
+
https://github.com/dotnet/aspnetcore
- d1f00b02ef24762bca23653fd963629749743334
+ 9c664bc65a52bc959138ec76c0250874fb38174d
-
+
https://github.com/dotnet/aspnetcore
- d1f00b02ef24762bca23653fd963629749743334
+ 9c664bc65a52bc959138ec76c0250874fb38174d
-
+
https://github.com/dotnet/aspnetcore
- d1f00b02ef24762bca23653fd963629749743334
+ 9c664bc65a52bc959138ec76c0250874fb38174d
-
+
https://github.com/dotnet/aspnetcore
- d1f00b02ef24762bca23653fd963629749743334
+ 9c664bc65a52bc959138ec76c0250874fb38174d
-
+
https://github.com/dotnet/aspnetcore
- d1f00b02ef24762bca23653fd963629749743334
+ 9c664bc65a52bc959138ec76c0250874fb38174d
diff --git a/eng/Versions.props b/eng/Versions.props
index 63e0fcf7882..446c97afa52 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -25,48 +25,48 @@
-->
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
- 8.0.0-preview.6.23314.15
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
+ 8.0.0-preview.7.23325.2
- 8.0.0-preview.6.23315.13
- 8.0.0-preview.6.23315.13
- 8.0.0-preview.6.23315.13
- 8.0.0-preview.6.23315.13
- 8.0.0-preview.6.23315.13
- 8.0.0-preview.6.23315.13
- 8.0.0-preview.6.23315.13
- 8.0.0-preview.6.23315.13
- 8.0.0-preview.6.23315.13
+ 8.0.0-preview.7.23327.18
+ 8.0.0-preview.7.23327.18
+ 8.0.0-preview.7.23327.18
+ 8.0.0-preview.7.23327.18
+ 8.0.0-preview.7.23327.18
+ 8.0.0-preview.7.23327.18
+ 8.0.0-preview.7.23327.18
+ 8.0.0-preview.7.23327.18
+ 8.0.0-preview.7.23327.18
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Type {0} already implements the Validate method
-
-
- A type already includes an implementation of the `Validate` method
-
-
- [OptionsValidator] cannot be applied to static class {0}
-
-
- `OptionsValidatorAttribute` can't be applied to a static class
-
-
- Can't use [ValidateObjectMembers] or [ValidateEnumeratedItems] on fields or properties with open generic type {0}
-
-
- Can't use `ValidateObjectMembersAttribute` or `ValidateEnumeratedItemsAttribute` on fields or properties with open generic types
-
-
- There is a circular type reference involving type {0} preventing it from being used for static validation
-
-
- Unsupported circular references in model types
-
-
- Type {0} does not implement the required IValidateOptions<{1}> interface
-
-
- A type annotated with `OptionsValidatorAttribute` doesn't implement the necessary interface
-
-
- Can't apply validation attributes to private field or property {0}
-
-
- Can't validate private fields or properties
-
-
- Type {0} has no fields or properties to validate, referenced from member {1}
-
-
- Type {0} has no fields or properties to validate, referenced by type {1}
-
-
- A type has no fields or properties to validate
-
-
- A member type has no fields or properties to validate
-
-
- [ValidateEnumeratedItems] cannot be used on members of type {0} as it doesn't implement IEnumerable<T>
-
-
- Member type is not enumerable
-
-
- Null validator type specified in [ValidateObjectMembers] or [ValidateEnumeratedItems] attributes
-
-
- Null validator type specified for the `ValidateObjectMembersAttribute` or `ValidateEnumeratedItemsAttribute` attributes
-
-
- Type {0} has validation annotations, but member {1} doesn't specify [ValidateEnumeratedItems] which could be an oversight
-
-
- Member potentially missing enumerable validation
-
-
- Type {0} has validation annotations, but member {1} doesn't specify [ValidateObjectMembers] which could be an oversight
-
-
- Member potentially missing transitive validation
-
-
- Validator type {0} doesn't have a parameterless constructor
-
-
- Validators used for transitive or enumerable validation must have a constructor with no parameters
-
-
diff --git a/src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolHolder.cs b/src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolHolder.cs
deleted file mode 100644
index 02d8deb9cd4..00000000000
--- a/src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolHolder.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using Microsoft.CodeAnalysis;
-
-namespace Microsoft.Gen.OptionsValidation;
-
-///
-/// Holds required symbols for the .
-///
-internal sealed record class SymbolHolder(
- INamedTypeSymbol OptionsValidatorSymbol,
- INamedTypeSymbol ValidationAttributeSymbol,
- INamedTypeSymbol DataTypeAttributeSymbol,
- INamedTypeSymbol ValidateOptionsSymbol,
- INamedTypeSymbol IValidatableObjectSymbol,
- INamedTypeSymbol TypeSymbol,
- INamedTypeSymbol? LegacyValidateTransitivelyAttributeSymbol,
- INamedTypeSymbol? ValidateObjectMembersAttributeSymbol,
- INamedTypeSymbol? ValidateEnumeratedItemsAttributeSymbol);
diff --git a/src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolLoader.cs b/src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolLoader.cs
deleted file mode 100644
index 8b365c7f68a..00000000000
--- a/src/Generators/Microsoft.Gen.OptionsValidation/Common/SymbolLoader.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using Microsoft.CodeAnalysis;
-
-namespace Microsoft.Gen.OptionsValidation;
-
-internal static class SymbolLoader
-{
- public const string OptionsValidatorAttribute = "Microsoft.Extensions.Options.Validation.OptionsValidatorAttribute";
- internal const string ValidationAttribute = "System.ComponentModel.DataAnnotations.ValidationAttribute";
- internal const string DataTypeAttribute = "System.ComponentModel.DataAnnotations.DataTypeAttribute";
- internal const string IValidatableObjectType = "System.ComponentModel.DataAnnotations.IValidatableObject";
- internal const string IValidateOptionsType = "Microsoft.Extensions.Options.IValidateOptions`1";
- internal const string TypeOfType = "System.Type";
- internal const string LegacyValidateTransitivelyAttribute = "Microsoft.Extensions.Data.Validation.ValidateTransitivelyObjectMembersAttribute";
- internal const string ValidateObjectMembersAttribute = "Microsoft.Extensions.Options.Validation.ValidateObjectMembersAttribute";
- internal const string ValidateEnumeratedItemsAttribute = "Microsoft.Extensions.Options.Validation.ValidateEnumeratedItemsAttribute";
-
- public static bool TryLoad(Compilation compilation, out SymbolHolder? symbolHolder)
- {
- INamedTypeSymbol? GetSymbol(string metadataName, bool optional = false)
- {
- var symbol = compilation.GetTypeByMetadataName(metadataName);
- if (symbol == null && !optional)
- {
- return null;
- }
-
- return symbol;
- }
-
- // required
- var optionsValidatorSymbol = GetSymbol(OptionsValidatorAttribute);
- var validationAttributeSymbol = GetSymbol(ValidationAttribute);
- var dataTypeAttributeSymbol = GetSymbol(DataTypeAttribute);
- var ivalidatableObjectSymbol = GetSymbol(IValidatableObjectType);
- var validateOptionsSymbol = GetSymbol(IValidateOptionsType);
- var typeSymbol = GetSymbol(TypeOfType);
-
-#pragma warning disable S1067 // Expressions should not be too complex
- if (optionsValidatorSymbol == null ||
- validationAttributeSymbol == null ||
- dataTypeAttributeSymbol == null ||
- ivalidatableObjectSymbol == null ||
- validateOptionsSymbol == null ||
- typeSymbol == null)
- {
- symbolHolder = default;
- return false;
- }
-#pragma warning restore S1067 // Expressions should not be too complex
-
- symbolHolder = new(
- optionsValidatorSymbol,
- validationAttributeSymbol,
- dataTypeAttributeSymbol,
- validateOptionsSymbol,
- ivalidatableObjectSymbol,
- typeSymbol,
-
- // optional
- GetSymbol(LegacyValidateTransitivelyAttribute, optional: true),
- GetSymbol(ValidateObjectMembersAttribute, optional: true),
- GetSymbol(ValidateEnumeratedItemsAttribute, optional: true));
-
- return true;
- }
-}
diff --git a/src/Generators/Microsoft.Gen.OptionsValidation/Directory.Build.props b/src/Generators/Microsoft.Gen.OptionsValidation/Directory.Build.props
deleted file mode 100644
index 882655d5161..00000000000
--- a/src/Generators/Microsoft.Gen.OptionsValidation/Directory.Build.props
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- Microsoft.Gen.OptionsValidation
- Code generator to support Microsoft.Extensions.Options.Validation.
- Fundamentals
-
-
-
- cs
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Generators/Microsoft.Gen.OptionsValidation/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.csproj b/src/Generators/Microsoft.Gen.OptionsValidation/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.csproj
deleted file mode 100644
index e1ef356a7da..00000000000
--- a/src/Generators/Microsoft.Gen.OptionsValidation/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.csproj
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
- Microsoft.Gen.OptionsValidation
- 3.8
- $(MicrosoftCodeAnalysisVersion_3_8)
-
-
-
- normal
- 94
- 85
- 85
-
-
-
-
- True
- True
- Resources.resx
-
-
-
-
-
-
-
-
-
diff --git a/src/Generators/Microsoft.Gen.OptionsValidation/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.csproj b/src/Generators/Microsoft.Gen.OptionsValidation/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.csproj
deleted file mode 100644
index 69d0da6a100..00000000000
--- a/src/Generators/Microsoft.Gen.OptionsValidation/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.csproj
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
- Microsoft.Gen.OptionsValidation
- 4.0
- $(MicrosoftCodeAnalysisVersion_4_0)
- $(DefineConstants);ROSLYN_4_0_OR_GREATER
-
-
-
- normal
- 94
- 85
- 50
-
-
-
-
- True
- True
- Resources.resx
-
-
-
-
-
-
-
-
-
diff --git a/src/LegacySupport/ExperimentalAttribute/ExperimentalAttribute.cs b/src/LegacySupport/ExperimentalAttribute/ExperimentalAttribute.cs
index 6d7d44a95f8..af31c0f8151 100644
--- a/src/LegacySupport/ExperimentalAttribute/ExperimentalAttribute.cs
+++ b/src/LegacySupport/ExperimentalAttribute/ExperimentalAttribute.cs
@@ -1,6 +1,8 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
+#if !NET8_0_OR_GREATER
+
namespace System.Diagnostics.CodeAnalysis;
///
@@ -24,30 +26,31 @@ internal sealed class ExperimentalAttribute : Attribute
///
/// Initializes a new instance of the class.
///
- public ExperimentalAttribute()
+ /// Human readable explanation for marking experimental API.
+ public ExperimentalAttribute(string diagnosticId)
{
- // Intentionally left empty.
+ DiagnosticId = diagnosticId;
}
///
- /// Initializes a new instance of the class.
+ /// Gets the ID that the compiler will use when reporting a use of the API the attribute applies to.
///
- /// Human readable explanation for marking experimental API.
- public ExperimentalAttribute(string message)
- {
-#pragma warning disable R9A014 // Use the 'Microsoft.Extensions.Diagnostics.Throws' class instead of explicitly throwing exception for improved performance
-#pragma warning disable R9A039 // Remove superfluous null check when compiling in a nullable context
-#pragma warning disable R9A060 // Consider removing unnecessary null coalescing (??) since the left-hand value is statically known not to be null
-#pragma warning disable SA1101 // Prefix local calls with this
- Message = message ?? throw new ArgumentNullException(nameof(message));
-#pragma warning restore SA1101 // Prefix local calls with this
-#pragma warning restore R9A060 // Consider removing unnecessary null coalescing (??) since the left-hand value is statically known not to be null
-#pragma warning restore R9A039 // Remove superfluous null check when compiling in a nullable context
-#pragma warning restore R9A014 // Use the 'Microsoft.Extensions.Diagnostics.Throws' class instead of explicitly throwing exception for improved performance
- }
+ /// The unique diagnostic ID.
+ ///
+ /// The diagnostic ID is shown in build output for warnings and errors.
+ /// This property represents the unique ID that can be used to suppress the warnings or errors, if needed.
+ ///
+ public string DiagnosticId { get; }
///
- /// Gets a human readable explanation for marking API as experimental.
+ /// Gets or sets the URL for corresponding documentation.
+ /// The API accepts a format string instead of an actual URL, creating a generic URL that includes the diagnostic ID.
///
- public string? Message { get; }
+ /// The format string that represents a URL to corresponding documentation.
+ /// An example format string is https://contoso.com/obsoletion-warnings/{0}.
+#pragma warning disable S3996 // URI properties should not be strings
+ public string? UrlFormat { get; set; }
+#pragma warning restore S3996 // URI properties should not be strings
}
+
+#endif
diff --git a/src/Libraries/Microsoft.AspNetCore.ConnectionTimeout/Microsoft.AspNetCore.ConnectionTimeout.csproj b/src/Libraries/Microsoft.AspNetCore.ConnectionTimeout/Microsoft.AspNetCore.ConnectionTimeout.csproj
index e9d691fe350..56c24014a2c 100644
--- a/src/Libraries/Microsoft.AspNetCore.ConnectionTimeout/Microsoft.AspNetCore.ConnectionTimeout.csproj
+++ b/src/Libraries/Microsoft.AspNetCore.ConnectionTimeout/Microsoft.AspNetCore.ConnectionTimeout.csproj
@@ -23,7 +23,6 @@
-
diff --git a/src/Libraries/Microsoft.AspNetCore.HeaderParsing/HeaderParsingOptionsValidator.cs b/src/Libraries/Microsoft.AspNetCore.HeaderParsing/HeaderParsingOptionsValidator.cs
index 0e46ce7a346..772c1d7061d 100644
--- a/src/Libraries/Microsoft.AspNetCore.HeaderParsing/HeaderParsingOptionsValidator.cs
+++ b/src/Libraries/Microsoft.AspNetCore.HeaderParsing/HeaderParsingOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.AspNetCore.HeaderParsing;
diff --git a/src/Libraries/Microsoft.AspNetCore.HeaderParsing/Microsoft.AspNetCore.HeaderParsing.csproj b/src/Libraries/Microsoft.AspNetCore.HeaderParsing/Microsoft.AspNetCore.HeaderParsing.csproj
index 80a4d8bb74e..af2b631d905 100644
--- a/src/Libraries/Microsoft.AspNetCore.HeaderParsing/Microsoft.AspNetCore.HeaderParsing.csproj
+++ b/src/Libraries/Microsoft.AspNetCore.HeaderParsing/Microsoft.AspNetCore.HeaderParsing.csproj
@@ -8,7 +8,6 @@
true
- true
true
true
true
@@ -23,7 +22,6 @@
-
diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Latency/Internal/RequestLatencyTelemetryOptionsValidator.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Latency/Internal/RequestLatencyTelemetryOptionsValidator.cs
index 02665354649..ddfe44114dd 100644
--- a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Latency/Internal/RequestLatencyTelemetryOptionsValidator.cs
+++ b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Latency/Internal/RequestLatencyTelemetryOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.AspNetCore.Telemetry.Internal;
diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/Internal/LoggingOptionsValidator.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/Internal/LoggingOptionsValidator.cs
index 851a41a3c8e..2cb7f021047 100644
--- a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/Internal/LoggingOptionsValidator.cs
+++ b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/Internal/LoggingOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.AspNetCore.Telemetry.Http.Logging;
diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/LoggingOptions.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/LoggingOptions.cs
index 9eb5339d5c9..5085a820bad 100644
--- a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/LoggingOptions.cs
+++ b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Logging/LoggingOptions.cs
@@ -67,7 +67,7 @@ public class LoggingOptions
///
/// The default value is .
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public HttpRouteParameterRedactionMode RequestPathParameterRedactionMode { get; set; } = DefaultPathParameterRedactionMode;
///
@@ -208,7 +208,7 @@ public class LoggingOptions
/// };
///
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[Required]
[SuppressMessage("Usage", "CA2227:Collection properties should be read only",
Justification = "Options pattern.")]
diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Microsoft.AspNetCore.Telemetry.Middleware.csproj b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Microsoft.AspNetCore.Telemetry.Middleware.csproj
index 94d8909aa14..97bb0654713 100644
--- a/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Microsoft.AspNetCore.Telemetry.Middleware.csproj
+++ b/src/Libraries/Microsoft.AspNetCore.Telemetry.Middleware/Microsoft.AspNetCore.Telemetry.Middleware.csproj
@@ -8,7 +8,6 @@
$(NetCoreTargetFrameworks)
- true
true
true
false
@@ -29,7 +28,6 @@
-
diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersEnricherExtensions.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersEnricherExtensions.cs
index 5e55a98f1c7..fb01da4fba3 100644
--- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersEnricherExtensions.cs
+++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersEnricherExtensions.cs
@@ -5,6 +5,7 @@
using System.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
using Microsoft.Extensions.Options.Validation;
using Microsoft.Extensions.Telemetry.Enrichment;
using Microsoft.Shared.Diagnostics;
diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptions.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptions.cs
index 1f46f1d898a..eaf16a28132 100644
--- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptions.cs
+++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptions.cs
@@ -20,7 +20,7 @@ public class RequestHeadersLogEnricherOptions
/// Default value is an empty dictionary.
///
[Required]
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
#pragma warning disable CA2227 // Collection properties should be read only
public IDictionary HeadersDataClasses { get; set; } = new Dictionary();
#pragma warning restore CA2227 // Collection properties should be read only
diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptionsValidator.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptionsValidator.cs
index 43213594e43..86e322270ac 100644
--- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptionsValidator.cs
+++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Enrichment.RequestHeaders/RequestHeadersLogEnricherOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.AspNetCore.Telemetry;
diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Microsoft.AspNetCore.Telemetry.csproj b/src/Libraries/Microsoft.AspNetCore.Telemetry/Microsoft.AspNetCore.Telemetry.csproj
index 94f50e5b3a5..ab52ba161bf 100644
--- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Microsoft.AspNetCore.Telemetry.csproj
+++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Microsoft.AspNetCore.Telemetry.csproj
@@ -8,7 +8,6 @@
true
- true
false
false
false
diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingExtensions.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingExtensions.cs
index 0a2eaef5181..24f72a1ef9b 100644
--- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingExtensions.cs
+++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingExtensions.cs
@@ -116,7 +116,7 @@ public static TracerProviderBuilder AddHttpTraceEnricher(this TracerProviderBuil
/// The to add this enricher.
/// for chaining.
/// The argument is .
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IServiceCollection AddHttpTraceEnricher(this IServiceCollection services)
where T : class, IHttpTraceEnricher
{
@@ -132,7 +132,7 @@ public static IServiceCollection AddHttpTraceEnricher(this IServiceCollection
/// Enricher to be added.
/// for chaining.
/// The argument or is .
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IServiceCollection AddHttpTraceEnricher(this IServiceCollection services, IHttpTraceEnricher enricher)
{
_ = Throw.IfNull(services);
diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingOptions.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingOptions.cs
index baf648ebaf6..1b4f1d8a5a6 100644
--- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingOptions.cs
+++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/HttpTracingOptions.cs
@@ -51,7 +51,7 @@ public class HttpTracingOptions
///
/// This property is applicable when the option is enabled.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public HttpRouteParameterRedactionMode RequestPathParameterRedactionMode { get; set; } = DefaultPathParameterRedactionMode;
///
diff --git a/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/Internal/HttpTracingOptionsValidator.cs b/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/Internal/HttpTracingOptionsValidator.cs
index 5a7146850a4..69bb8139805 100644
--- a/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/Internal/HttpTracingOptionsValidator.cs
+++ b/src/Libraries/Microsoft.AspNetCore.Telemetry/Tracing/Internal/HttpTracingOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.AspNetCore.Telemetry.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/ApplicationMetadataValidator.cs b/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/ApplicationMetadataValidator.cs
index cf8e27ded88..8a129d03b8a 100644
--- a/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/ApplicationMetadataValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/ApplicationMetadataValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.AmbientMetadata;
diff --git a/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/Microsoft.Extensions.AmbientMetadata.Application.csproj b/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/Microsoft.Extensions.AmbientMetadata.Application.csproj
index 0aaa9620fba..7d860c650ba 100644
--- a/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/Microsoft.Extensions.AmbientMetadata.Application.csproj
+++ b/src/Libraries/Microsoft.Extensions.AmbientMetadata.Application/Microsoft.Extensions.AmbientMetadata.Application.csproj
@@ -5,10 +5,6 @@
Fundamentals
-
- true
-
-
normal
100
@@ -16,7 +12,6 @@
-
diff --git a/src/Libraries/Microsoft.Extensions.AsyncState/IAsyncLocalContext.cs b/src/Libraries/Microsoft.Extensions.AsyncState/IAsyncLocalContext.cs
index a180eb275fb..be5e9025591 100644
--- a/src/Libraries/Microsoft.Extensions.AsyncState/IAsyncLocalContext.cs
+++ b/src/Libraries/Microsoft.Extensions.AsyncState/IAsyncLocalContext.cs
@@ -11,7 +11,7 @@ namespace Microsoft.Extensions.AsyncState;
///
/// The type of the asynchronous state.
/// This type is intended for internal use. Use instead.
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EditorBrowsable(EditorBrowsableState.Never)]
#pragma warning disable S4023 // Interfaces should not be empty
public interface IAsyncLocalContext : IAsyncContext
diff --git a/src/Libraries/Microsoft.Extensions.Compliance.Redaction/Microsoft.Extensions.Compliance.Redaction.csproj b/src/Libraries/Microsoft.Extensions.Compliance.Redaction/Microsoft.Extensions.Compliance.Redaction.csproj
index d88e014f05a..15442d1a835 100644
--- a/src/Libraries/Microsoft.Extensions.Compliance.Redaction/Microsoft.Extensions.Compliance.Redaction.csproj
+++ b/src/Libraries/Microsoft.Extensions.Compliance.Redaction/Microsoft.Extensions.Compliance.Redaction.csproj
@@ -6,7 +6,6 @@
- true
true
diff --git a/src/Libraries/Microsoft.Extensions.Compliance.Testing/FakeRedactorOptionsAutoValidator.cs b/src/Libraries/Microsoft.Extensions.Compliance.Testing/FakeRedactorOptionsAutoValidator.cs
index 848234268c9..91ea505e36c 100644
--- a/src/Libraries/Microsoft.Extensions.Compliance.Testing/FakeRedactorOptionsAutoValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Compliance.Testing/FakeRedactorOptionsAutoValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Compliance.Testing;
diff --git a/src/Libraries/Microsoft.Extensions.Compliance.Testing/Microsoft.Extensions.Compliance.Testing.csproj b/src/Libraries/Microsoft.Extensions.Compliance.Testing/Microsoft.Extensions.Compliance.Testing.csproj
index a09c5578f9b..10f6491f9df 100644
--- a/src/Libraries/Microsoft.Extensions.Compliance.Testing/Microsoft.Extensions.Compliance.Testing.csproj
+++ b/src/Libraries/Microsoft.Extensions.Compliance.Testing/Microsoft.Extensions.Compliance.Testing.csproj
@@ -7,7 +7,6 @@
- true
true
true
true
@@ -23,7 +22,6 @@
-
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/CommonHealthChecksExtensions.TelemetryPublisher.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/CommonHealthChecksExtensions.TelemetryPublisher.cs
index ac7cbf8edee..9034b7b9884 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/CommonHealthChecksExtensions.TelemetryPublisher.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/CommonHealthChecksExtensions.TelemetryPublisher.cs
@@ -30,7 +30,7 @@ public static IServiceCollection AddTelemetryHealthCheckPublisher(this IServiceC
/// Configuration for .
/// The value of .
/// or are .
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IServiceCollection AddTelemetryHealthCheckPublisher(this IServiceCollection services, IConfigurationSection section)
=> Throw.IfNull(services)
.Configure(Throw.IfNull(section))
@@ -44,7 +44,7 @@ public static IServiceCollection AddTelemetryHealthCheckPublisher(this IServiceC
/// Configuration for .
/// The value of .
/// or are .
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IServiceCollection AddTelemetryHealthCheckPublisher(this IServiceCollection services, Action configure)
=> Throw.IfNull(services)
.Configure(Throw.IfNull(configure))
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/TelemetryHealthCheckPublisherOptions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/TelemetryHealthCheckPublisherOptions.cs
index bf5d07c5dce..d2b1155551a 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/TelemetryHealthCheckPublisherOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.Common/TelemetryHealthCheckPublisherOptions.cs
@@ -8,7 +8,7 @@ namespace Microsoft.Extensions.Diagnostics.HealthChecks;
///
/// Options for the telemetry health check publisher.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public class TelemetryHealthCheckPublisherOptions
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.csproj b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.csproj
index cacc4326872..8497c054823 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.csproj
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization.csproj
@@ -6,7 +6,6 @@
- true
true
true
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptions.cs
index 29afe898c19..115c94da936 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptions.cs
@@ -3,7 +3,7 @@
using System;
using Microsoft.Extensions.Diagnostics.ResourceMonitoring;
-using Microsoft.Extensions.Options.Validation;
+using Microsoft.Extensions.Options;
using Microsoft.Shared.Data.Validation;
namespace Microsoft.Extensions.Diagnostics.HealthChecks;
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptionsValidator.cs
index 5ed6da4d506..2ed4d499a14 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization/ResourceUtilizationHealthCheckOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Diagnostics.HealthChecks;
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Kubernetes/TcpEndpointHealthCheckOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Kubernetes/TcpEndpointHealthCheckOptionsValidator.cs
index b606417706d..0a11191883e 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Kubernetes/TcpEndpointHealthCheckOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Kubernetes/TcpEndpointHealthCheckOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Diagnostics.Probes;
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Microsoft.Extensions.Diagnostics.Probes.csproj b/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Microsoft.Extensions.Diagnostics.Probes.csproj
index deaa8dc277a..ec64ad46cc5 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Microsoft.Extensions.Diagnostics.Probes.csproj
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Microsoft.Extensions.Diagnostics.Probes.csproj
@@ -7,7 +7,6 @@
true
- true
true
true
@@ -21,7 +20,6 @@
-
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsValidator.cs
index e7c38f1bbeb..6295ecdaecd 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Internal/ResourceUtilizationTrackerOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring;
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Internal/LinuxResourceUtilizationProviderOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Internal/LinuxResourceUtilizationProviderOptionsValidator.cs
index b8e0ebc445c..7631d2d4d10 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Internal/LinuxResourceUtilizationProviderOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/Internal/LinuxResourceUtilizationProviderOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationExtensions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationExtensions.cs
index 7c4163199ca..5183b37810e 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Linux/LinuxUtilizationExtensions.cs
@@ -6,6 +6,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Diagnostics.ResourceMonitoring.Internal;
+using Microsoft.Extensions.Options;
using Microsoft.Extensions.Options.Validation;
using Microsoft.Extensions.Telemetry.Metering;
using Microsoft.Shared.Diagnostics;
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 532e55ea400..c09459bdb77 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
@@ -7,7 +7,6 @@
true
- true
true
true
true
@@ -27,7 +26,6 @@
-
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringOptions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringOptions.cs
index d6b55d14820..97f2b805ff1 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/ResourceMonitoringOptions.cs
@@ -50,7 +50,7 @@ public class ResourceMonitoringOptions
/// The value needs to be less than or equal to the .
/// Most importantly, this period is used to calculate instances pushed to publishers.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[TimeSpan(MinimumSamplingWindow, MaximumSamplingWindow)]
public TimeSpan CalculationPeriod { get; set; } = DefaultCollectionWindow;
}
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Internal/WindowsCountersOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Internal/WindowsCountersOptionsValidator.cs
index 501d31049df..2058dd53ecb 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Internal/WindowsCountersOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/Internal/WindowsCountersOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring;
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsCountersOptions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsCountersOptions.cs
index 5d90106ce54..1678918817c 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsCountersOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsCountersOptions.cs
@@ -12,7 +12,7 @@ namespace Microsoft.Extensions.Diagnostics.ResourceMonitoring;
///
/// Options for WindowsCounters.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public class WindowsCountersOptions
{
internal const int MinimumCachingInterval = 100;
@@ -33,7 +33,7 @@ public class WindowsCountersOptions
///
/// The default value is 5 seconds.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[TimeSpan(MinimumCachingInterval, MaximumCachingInterval)]
public TimeSpan CachingInterval { get; set; } = DefaultCachingInterval;
}
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsUtilizationExtensions.cs b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsUtilizationExtensions.cs
index 211f6976e5e..1718e85d9e9 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsUtilizationExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsUtilizationExtensions.cs
@@ -65,7 +65,7 @@ public static IResourceMonitorBuilder AddWindowsPerfCounterPublisher(this IResou
/// The value of .
/// is .
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IResourceMonitorBuilder AddWindowsCounters(this IResourceMonitorBuilder builder)
{
_ = Throw.IfNull(builder);
@@ -93,7 +93,7 @@ public static IResourceMonitorBuilder AddWindowsCounters(this IResourceMonitorBu
/// The value of .
/// is .
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IResourceMonitorBuilder AddWindowsCounters(this IResourceMonitorBuilder builder, IConfigurationSection section)
{
_ = Throw.IfNull(builder);
@@ -123,7 +123,7 @@ public static IResourceMonitorBuilder AddWindowsCounters(this IResourceMonitorBu
/// The value of .
/// is .
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IResourceMonitorBuilder AddWindowsCounters(this IResourceMonitorBuilder builder, Action configure)
{
_ = Throw.IfNull(builder);
diff --git a/src/Libraries/Microsoft.Extensions.Hosting.Testing/HostingFakesExtensions.cs b/src/Libraries/Microsoft.Extensions.Hosting.Testing/HostingFakesExtensions.cs
index 57234351d7c..9d61e191b86 100644
--- a/src/Libraries/Microsoft.Extensions.Hosting.Testing/HostingFakesExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Hosting.Testing/HostingFakesExtensions.cs
@@ -19,7 +19,7 @@ namespace Microsoft.Extensions.Hosting.Testing;
///
/// Extension methods supporting host unit testing scenarios.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static class HostingFakesExtensions
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientAttribute.cs
index 0c3323cde5f..43f66cda85e 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientAttribute.cs
@@ -27,7 +27,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// }
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[AttributeUsage(AttributeTargets.Interface)]
[Conditional("CODE_GENERATION_ATTRIBUTES")]
public sealed class AutoClientAttribute : Attribute
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientException.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientException.cs
index e244ea0691d..56bdd54dae6 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientException.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientException.cs
@@ -27,7 +27,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
///
///
[SuppressMessage("Design", "CA1032:Implement standard exception constructors", Justification = "Not applicable to this exception")]
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public class AutoClientException : Exception
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientHttpError.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientHttpError.cs
index 05b9b713973..a194a4c2d1c 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientHttpError.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientHttpError.cs
@@ -19,7 +19,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// When a REST API client fails, it will throw a .
/// This exception contains a instance that holds details like content, headers and status code.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public class AutoClientHttpError
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientOptions.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientOptions.cs
index 63a961dcde7..11df36f248c 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/AutoClientOptions.cs
@@ -21,7 +21,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// });
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public class AutoClientOptions
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyAttribute.cs
index d6b3d8bf8d4..697c8806ee8 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyAttribute.cs
@@ -24,7 +24,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// }
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[AttributeUsage(AttributeTargets.Parameter)]
[Conditional("CODE_GENERATION_ATTRIBUTES")]
public sealed class BodyAttribute : Attribute
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyContentType.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyContentType.cs
index 93baae2b791..4a4617cdc0b 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyContentType.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/BodyContentType.cs
@@ -8,7 +8,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
///
/// Defines the types of encoding possible for request bodies.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public enum BodyContentType
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/HeaderAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/HeaderAttribute.cs
index 48a3d45a679..e1af6b6240f 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/HeaderAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/HeaderAttribute.cs
@@ -23,7 +23,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// }
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[AttributeUsage(AttributeTargets.Parameter)]
[Conditional("CODE_GENERATION_ATTRIBUTES")]
public sealed class HeaderAttribute : Attribute
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/DeleteAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/DeleteAttribute.cs
index 8b2a2fd473f..ab67d7e61f8 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/DeleteAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/DeleteAttribute.cs
@@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// }
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[AttributeUsage(AttributeTargets.Method)]
public sealed class DeleteAttribute : Attribute
{
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/GetAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/GetAttribute.cs
index 577a82321e2..29859dac58a 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/GetAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/GetAttribute.cs
@@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// }
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[AttributeUsage(AttributeTargets.Method)]
public sealed class GetAttribute : Attribute
{
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/HeadAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/HeadAttribute.cs
index e9121a281b4..7ede1879fc4 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/HeadAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/HeadAttribute.cs
@@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// }
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[AttributeUsage(AttributeTargets.Method)]
public sealed class HeadAttribute : Attribute
{
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/OptionsAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/OptionsAttribute.cs
index de23fa8d0f9..11659f78b06 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/OptionsAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/OptionsAttribute.cs
@@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// }
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[AttributeUsage(AttributeTargets.Method)]
public sealed class OptionsAttribute : Attribute
{
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PatchAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PatchAttribute.cs
index 04e5803ab8d..489259c9c28 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PatchAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PatchAttribute.cs
@@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// }
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[AttributeUsage(AttributeTargets.Method)]
public sealed class PatchAttribute : Attribute
{
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PostAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PostAttribute.cs
index a42a3f6bb16..52385dc5873 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PostAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PostAttribute.cs
@@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// }
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[AttributeUsage(AttributeTargets.Method)]
public sealed class PostAttribute : Attribute
{
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PutAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PutAttribute.cs
index c7de67fa335..9342d15fca2 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PutAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Methods/PutAttribute.cs
@@ -29,7 +29,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// }
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[AttributeUsage(AttributeTargets.Method)]
public sealed class PutAttribute : Attribute
{
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Microsoft.Extensions.Http.AutoClient.csproj b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Microsoft.Extensions.Http.AutoClient.csproj
index 5c5b7eca3bc..4d4185e35b1 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/Microsoft.Extensions.Http.AutoClient.csproj
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/Microsoft.Extensions.Http.AutoClient.csproj
@@ -6,7 +6,6 @@
- true
true
@@ -25,10 +24,6 @@
-
-
-
-
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/QueryAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/QueryAttribute.cs
index 0b9b9da47d1..306ad18839d 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/QueryAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/QueryAttribute.cs
@@ -23,7 +23,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// }
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[AttributeUsage(AttributeTargets.Parameter)]
[Conditional("CODE_GENERATION_ATTRIBUTES")]
public sealed class QueryAttribute : Attribute
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/RequestNameAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/RequestNameAttribute.cs
index e3fbc2a2e8b..48cefbdc1e9 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/RequestNameAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/RequestNameAttribute.cs
@@ -26,7 +26,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// }
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[AttributeUsage(AttributeTargets.Method)]
[Conditional("CODE_GENERATION_ATTRIBUTES")]
public sealed class RequestNameAttribute : Attribute
diff --git a/src/Libraries/Microsoft.Extensions.Http.AutoClient/StaticHeaderAttribute.cs b/src/Libraries/Microsoft.Extensions.Http.AutoClient/StaticHeaderAttribute.cs
index 774d9716267..5c44944c918 100644
--- a/src/Libraries/Microsoft.Extensions.Http.AutoClient/StaticHeaderAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.AutoClient/StaticHeaderAttribute.cs
@@ -27,7 +27,7 @@ namespace Microsoft.Extensions.Http.AutoClient;
/// }
///
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[AttributeUsage(AttributeTargets.Interface | AttributeTargets.Method, AllowMultiple = true)]
[Conditional("CODE_GENERATION_ATTRIBUTES")]
public sealed class StaticHeaderAttribute : Attribute
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/ContextExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/ContextExtensions.cs
index 7ff798724cc..72f6fc491b8 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/ContextExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/ContextExtensions.cs
@@ -1,4 +1,4 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.Diagnostics.CodeAnalysis;
@@ -11,7 +11,7 @@ namespace Microsoft.Extensions.Http.Resilience.FaultInjection;
///
/// Provides extension methods for .
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static class ContextExtensions
{
private const string CallingRequestMessage = "CallingRequestMessage";
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/HttpClientFaultInjectionExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/HttpClientFaultInjectionExtensions.cs
index a4d5e91c5c8..289b9aed156 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/HttpClientFaultInjectionExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/FaultInjection/HttpClientFaultInjectionExtensions.cs
@@ -147,7 +147,7 @@ public static IHttpClientBuilder AddFaultInjectionPolicyHandler(this IHttpClient
///
/// The so that additional calls can be chained.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IHttpClientBuilder AddWeightedFaultInjectionPolicyHandlers(this IHttpClientBuilder httpClientBuilder,
Action weightAssignmentsConfig)
{
@@ -176,7 +176,7 @@ public static IHttpClientBuilder AddWeightedFaultInjectionPolicyHandlers(this IH
///
/// The so that additional calls can be chained.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[DynamicDependency(
DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.PublicParameterlessConstructor,
typeof(FaultPolicyWeightAssignmentsOptions))]
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HedgingEndpointOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HedgingEndpointOptions.cs
index d3b73a59afa..0e95be87f24 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HedgingEndpointOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HedgingEndpointOptions.cs
@@ -1,10 +1,10 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// 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.ComponentModel.DataAnnotations;
using Microsoft.Extensions.Http.Resilience.Internal.Validators;
-using Microsoft.Extensions.Options.Validation;
+using Microsoft.Extensions.Options;
using Polly.Timeout;
namespace Microsoft.Extensions.Http.Resilience;
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HttpStandardHedgingResilienceOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HttpStandardHedgingResilienceOptions.cs
index 7f4f560b2d4..e30ce2862ff 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HttpStandardHedgingResilienceOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/HttpStandardHedgingResilienceOptions.cs
@@ -1,11 +1,11 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// 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.ComponentModel.DataAnnotations;
using Microsoft.Extensions.Compliance.Classification;
using Microsoft.Extensions.Http.Resilience.Internal.Validators;
-using Microsoft.Extensions.Options.Validation;
+using Microsoft.Extensions.Options;
namespace Microsoft.Extensions.Http.Resilience;
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/Internals/Validators/HttpStandardHedgingResilienceOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/Internals/Validators/HttpStandardHedgingResilienceOptionsValidator.cs
index d9c81573d81..7cc7faa75fd 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/Internals/Validators/HttpStandardHedgingResilienceOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/Internals/Validators/HttpStandardHedgingResilienceOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Http.Resilience.Internal.Validators;
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/StandardHedgingHandlerBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/StandardHedgingHandlerBuilderExtensions.cs
index acfe72386ae..a51f69f3a82 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/StandardHedgingHandlerBuilderExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Hedging/StandardHedgingHandlerBuilderExtensions.cs
@@ -1,4 +1,4 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
@@ -65,7 +65,7 @@ public static IStandardHedgingHandlerBuilder Configure(this IStandardHedgingHand
/// The strategy builder.
/// The configure method.
/// The same builder instance.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IStandardHedgingHandlerBuilder Configure(this IStandardHedgingHandlerBuilder builder, Action configure)
{
_ = Throw.IfNull(builder);
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Microsoft.Extensions.Http.Resilience.csproj b/src/Libraries/Microsoft.Extensions.Http.Resilience/Microsoft.Extensions.Http.Resilience.csproj
index b63bf4ab1c4..733b5ae0bb8 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Microsoft.Extensions.Http.Resilience.csproj
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Microsoft.Extensions.Http.Resilience.csproj
@@ -10,7 +10,6 @@
true
true
true
- true
true
true
false
@@ -28,7 +27,6 @@
-
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceBuilderBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceBuilderBuilderExtensions.cs
index ce8acf3c861..b3cee1fc974 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceBuilderBuilderExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceBuilderBuilderExtensions.cs
@@ -1,4 +1,4 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
@@ -65,7 +65,7 @@ public static IHttpStandardResilienceStrategyBuilder Configure(this IHttpStandar
/// The configure method.
/// The same builder instance.
#pragma warning disable S3872 // Parameter names should not duplicate the names of their methods
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IHttpStandardResilienceStrategyBuilder Configure(this IHttpStandardResilienceStrategyBuilder builder, Action configure)
#pragma warning restore S3872 // Parameter names should not duplicate the names of their methods
{
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceOptions.cs
index b3c58506e13..cd3fa7a94cf 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/HttpStandardResilienceOptions.cs
@@ -1,10 +1,10 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// 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.ComponentModel.DataAnnotations;
using Microsoft.Extensions.Http.Resilience.Internal;
-using Microsoft.Extensions.Options.Validation;
+using Microsoft.Extensions.Options;
using Polly.Timeout;
namespace Microsoft.Extensions.Http.Resilience;
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/Internal/Validators/HttpStandardResilienceOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/Internal/Validators/HttpStandardResilienceOptionsValidator.cs
index d07c5564bf4..06018537821 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/Internal/Validators/HttpStandardResilienceOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Resilience/Internal/Validators/HttpStandardResilienceOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Http.Resilience.Internal.Validators;
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/EndpointGroup.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/EndpointGroup.cs
index 12a43a3959d..2c95550db07 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/EndpointGroup.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/EndpointGroup.cs
@@ -2,7 +2,7 @@
// The .NET Foundation licenses this file to you under the MIT license.
using System.Collections.Generic;
-using Microsoft.Extensions.Options.Validation;
+using Microsoft.Extensions.Options;
namespace Microsoft.Extensions.Http.Resilience;
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/OrderedGroups/OrderedGroupsRoutingOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/OrderedGroups/OrderedGroupsRoutingOptionsValidator.cs
index f69a0cd7226..3ba6ed3df24 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/OrderedGroups/OrderedGroupsRoutingOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/OrderedGroups/OrderedGroupsRoutingOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Http.Resilience.Internal.Routing;
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/WeightedGroups/WeightedGroupsRoutingOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/WeightedGroups/WeightedGroupsRoutingOptionsValidator.cs
index 34659cd2bcb..35686af2ba3 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/WeightedGroups/WeightedGroupsRoutingOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/Internal/WeightedGroups/WeightedGroupsRoutingOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Http.Resilience.Internal.Routing;
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/OrderedGroupsRoutingOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/OrderedGroupsRoutingOptions.cs
index 0b99daabf7b..6d856ab6345 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/OrderedGroupsRoutingOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/OrderedGroupsRoutingOptions.cs
@@ -3,7 +3,7 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options.Validation;
+using Microsoft.Extensions.Options;
namespace Microsoft.Extensions.Http.Resilience;
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/RoutingStrategyBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/RoutingStrategyBuilderExtensions.cs
index fbd3530f7c1..f1ef1667a4a 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/RoutingStrategyBuilderExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/RoutingStrategyBuilderExtensions.cs
@@ -67,7 +67,7 @@ public static IRoutingStrategyBuilder ConfigureOrderedGroups(this IRoutingStrate
///
/// The same routing builder instance.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IRoutingStrategyBuilder ConfigureOrderedGroups(this IRoutingStrategyBuilder builder, Action configure)
{
_ = Throw.IfNull(builder);
@@ -121,7 +121,7 @@ public static IRoutingStrategyBuilder ConfigureWeightedGroups(this IRoutingStrat
///
/// The same routing builder instance.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IRoutingStrategyBuilder ConfigureWeightedGroups(this IRoutingStrategyBuilder builder, Action configure)
{
_ = Throw.IfNull(builder);
diff --git a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/WeightedGroupsRoutingOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/WeightedGroupsRoutingOptions.cs
index 7ce868e494d..5d3bdfa8bdd 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/WeightedGroupsRoutingOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Resilience/Routing/WeightedGroupsRoutingOptions.cs
@@ -3,7 +3,7 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options.Validation;
+using Microsoft.Extensions.Options;
namespace Microsoft.Extensions.Http.Resilience;
diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/Internal/LoggingOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/Internal/LoggingOptionsValidator.cs
index 582d87fd874..64103a74b4d 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/Internal/LoggingOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/Internal/LoggingOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Http.Telemetry.Logging.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/LoggingOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/LoggingOptions.cs
index 0d44db5149a..aa05eb08e3f 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/LoggingOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Logging/LoggingOptions.cs
@@ -134,7 +134,7 @@ public class LoggingOptions
///
/// The default value is .
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public HttpRouteParameterRedactionMode RequestPathParameterRedactionMode { get; set; } = DefaultPathParameterRedactionMode;
///
diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpClientMeteringExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpClientMeteringExtensions.cs
index 7927428efaf..5a96349c2ba 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpClientMeteringExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpClientMeteringExtensions.cs
@@ -34,7 +34,7 @@ public static class HttpClientMeteringExtensions
///
/// instance for chaining.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IServiceCollection AddHttpClientMeteringForAllHttpClients(this IServiceCollection services)
{
_ = Throw.IfNull(services);
diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpMeteringHandler.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpMeteringHandler.cs
index ba946b7198b..309ed468fc2 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpMeteringHandler.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpMeteringHandler.cs
@@ -49,7 +49,7 @@ public class HttpMeteringHandler : DelegatingHandler
///
/// The meter.
/// Enumerable of outgoing request metric enrichers.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public HttpMeteringHandler(
Meter meter,
IEnumerable enrichers)
diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpRequestResultType.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpRequestResultType.cs
index d6c33a18376..a24204404d5 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpRequestResultType.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Metering/HttpRequestResultType.cs
@@ -9,7 +9,7 @@ namespace Microsoft.Extensions.Http.Telemetry.Metering;
///
/// Statuses for classifying http request result.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EnumStrings]
public enum HttpRequestResultType
{
diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Microsoft.Extensions.Http.Telemetry.csproj b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Microsoft.Extensions.Http.Telemetry.csproj
index 2e1f3b162ae..5da0cb9d370 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Microsoft.Extensions.Http.Telemetry.csproj
+++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Microsoft.Extensions.Http.Telemetry.csproj
@@ -8,7 +8,6 @@
true
true
- true
true
true
false
@@ -32,7 +31,6 @@
-
diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingExtensions.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingExtensions.cs
index 5901f2668f3..85fff0062b3 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingExtensions.cs
@@ -82,7 +82,7 @@ public static TracerProviderBuilder AddHttpClientTracing(this TracerProviderBuil
/// The to add this enricher to.
/// for chaining.
/// The argument is .
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IServiceCollection AddHttpClientTraceEnricher(this IServiceCollection services)
where T : class, IHttpClientTraceEnricher
{
@@ -98,7 +98,7 @@ public static IServiceCollection AddHttpClientTraceEnricher(this IServiceColl
/// Enricher to be added.
/// for chaining.
/// The argument or is .
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IServiceCollection AddHttpClientTraceEnricher(this IServiceCollection services, IHttpClientTraceEnricher enricher)
{
_ = Throw.IfNull(services);
diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingOptions.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingOptions.cs
index ac0e56ff31c..a1b678643a9 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/HttpClientTracingOptions.cs
@@ -23,7 +23,7 @@ public class HttpClientTracingOptions
///
/// The default value is .
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public HttpRouteParameterRedactionMode RequestPathParameterRedactionMode { get; set; } = DefaultPathParameterRedactionMode;
///
diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpClientTraceEnricher.netfx.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpClientTraceEnricher.netfx.cs
index e557eb5ac59..307325ab00f 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpClientTraceEnricher.netfx.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpClientTraceEnricher.netfx.cs
@@ -23,7 +23,7 @@ public interface IHttpClientTraceEnricher
///
/// If your enricher fetches some information from or to enrich HTTP traces, then make sure to check it for .
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
void Enrich(Activity activity, HttpWebRequest? webRequest, HttpWebResponse? webResponse);
}
diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpPathRedactor.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpPathRedactor.cs
index f15a5465e66..1ec02d6758f 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpPathRedactor.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/IHttpPathRedactor.cs
@@ -10,7 +10,7 @@ namespace Microsoft.Extensions.Http.Telemetry.Tracing;
///
/// Interface for implementing a redaction mechanism for outgoing HTTP request paths.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public interface IHttpPathRedactor
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/Internal/HttpClientTracingOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/Internal/HttpClientTracingOptionsValidator.cs
index bdae1d856eb..efb9c70c443 100644
--- a/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/Internal/HttpClientTracingOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Http.Telemetry/Tracing/Internal/HttpClientTracingOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Http.Telemetry.Tracing.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/DependencyInjectionPoolOptions.cs b/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/DependencyInjectionPoolOptions.cs
index cbb398634ee..f5002f122ca 100644
--- a/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/DependencyInjectionPoolOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/DependencyInjectionPoolOptions.cs
@@ -8,7 +8,7 @@ namespace Microsoft.Extensions.ObjectPool;
///
/// Contains configuration for pools.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public sealed class DependencyInjectionPoolOptions
{
internal const int DefaultCapacity = 1024;
diff --git a/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/ObjectPoolServiceCollectionExtensions.cs b/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/ObjectPoolServiceCollectionExtensions.cs
index 2622a9d9958..29ea71e2995 100644
--- a/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/ObjectPoolServiceCollectionExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.ObjectPool.DependencyInjection/ObjectPoolServiceCollectionExtensions.cs
@@ -15,7 +15,7 @@ namespace Microsoft.Extensions.ObjectPool;
///
/// Extension methods for adding to DI container.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static class ObjectPoolServiceCollectionExtensions
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.csproj b/src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.csproj
deleted file mode 100644
index be466cb0dc0..00000000000
--- a/src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.csproj
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
- Microsoft.Extensions.Options.Validation
- Support for extended option validation.
- Fundamentals
-
-
-
- true
- true
- true
- true
-
-
-
- normal
- 100
- 95
- 92
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.json b/src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.json
deleted file mode 100644
index 89c2e051c7d..00000000000
--- a/src/Libraries/Microsoft.Extensions.Options.Validation/Microsoft.Extensions.Options.Validation.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "Name": "Microsoft.Extensions.Options.Validation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35",
- "Types": [
- {
- "Type": "sealed class Microsoft.Extensions.Options.Validation.OptionsValidatorAttribute : System.Attribute",
- "Stage": "Stable",
- "Methods": [
- {
- "Member": "Microsoft.Extensions.Options.Validation.OptionsValidatorAttribute.OptionsValidatorAttribute();",
- "Stage": "Stable"
- }
- ]
- },
- {
- "Type": "sealed class Microsoft.Extensions.Options.Validation.ValidateEnumeratedItemsAttribute : System.Attribute",
- "Stage": "Experimental",
- "Methods": [
- {
- "Member": "Microsoft.Extensions.Options.Validation.ValidateEnumeratedItemsAttribute.ValidateEnumeratedItemsAttribute();",
- "Stage": "Experimental"
- },
- {
- "Member": "Microsoft.Extensions.Options.Validation.ValidateEnumeratedItemsAttribute.ValidateEnumeratedItemsAttribute(System.Type validator);",
- "Stage": "Experimental"
- }
- ],
- "Properties": [
- {
- "Member": "System.Type? Microsoft.Extensions.Options.Validation.ValidateEnumeratedItemsAttribute.Validator { get; }",
- "Stage": "Experimental"
- }
- ]
- },
- {
- "Type": "sealed class Microsoft.Extensions.Options.Validation.ValidateObjectMembersAttribute : System.Attribute",
- "Stage": "Stable",
- "Methods": [
- {
- "Member": "Microsoft.Extensions.Options.Validation.ValidateObjectMembersAttribute.ValidateObjectMembersAttribute();",
- "Stage": "Stable"
- },
- {
- "Member": "Microsoft.Extensions.Options.Validation.ValidateObjectMembersAttribute.ValidateObjectMembersAttribute(System.Type validator);",
- "Stage": "Stable"
- }
- ],
- "Properties": [
- {
- "Member": "System.Type? Microsoft.Extensions.Options.Validation.ValidateObjectMembersAttribute.Validator { get; }",
- "Stage": "Stable"
- }
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/OptionsValidatorAttribute.cs b/src/Libraries/Microsoft.Extensions.Options.Validation/OptionsValidatorAttribute.cs
deleted file mode 100644
index c5a8fa15ba4..00000000000
--- a/src/Libraries/Microsoft.Extensions.Options.Validation/OptionsValidatorAttribute.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System;
-using System.Diagnostics;
-
-namespace Microsoft.Extensions.Options.Validation;
-
-///
-/// Triggers the automatic generation of the implementation of at compile time.
-///
-[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
-[Conditional("CODE_GENERATION_ATTRIBUTES")]
-public sealed class OptionsValidatorAttribute : Attribute
-{
-}
diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/ValidateEnumeratedItemsAttribute.cs b/src/Libraries/Microsoft.Extensions.Options.Validation/ValidateEnumeratedItemsAttribute.cs
deleted file mode 100644
index 11ccd1c22fd..00000000000
--- a/src/Libraries/Microsoft.Extensions.Options.Validation/ValidateEnumeratedItemsAttribute.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System;
-using System.Diagnostics.CodeAnalysis;
-using Microsoft.Extensions.Options;
-
-namespace Microsoft.Extensions.Options.Validation;
-
-///
-/// Marks a field or property to be enumerated, and each enumerated object to be validated.
-///
-[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
-[Experimental]
-public sealed class ValidateEnumeratedItemsAttribute : Attribute
-{
- ///
- /// Initializes a new instance of the class.
- ///
- ///
- /// Using this constructor for a field/property tells the code generator to
- /// generate validation for the individual members of the enumerable's type.
- ///
- public ValidateEnumeratedItemsAttribute()
- {
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// A type that implements for the enumerable's type.
- ///
- /// Using this constructor for a field/property tells the code generator to use the given type to validate
- /// the object held by the enumerable.
- ///
- public ValidateEnumeratedItemsAttribute(Type validator)
- {
- Validator = validator;
- }
-
- ///
- /// Gets the type to use to validate the enumerable's objects.
- ///
- public Type? Validator { get; }
-}
diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/ValidateObjectMembersAttribute.cs b/src/Libraries/Microsoft.Extensions.Options.Validation/ValidateObjectMembersAttribute.cs
deleted file mode 100644
index 6bdd46261f7..00000000000
--- a/src/Libraries/Microsoft.Extensions.Options.Validation/ValidateObjectMembersAttribute.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System;
-using Microsoft.Extensions.Options;
-
-namespace Microsoft.Extensions.Options.Validation;
-
-///
-/// Marks a field or property to be validated transitively.
-///
-[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
-public sealed class ValidateObjectMembersAttribute : Attribute
-{
- ///
- /// Initializes a new instance of the class.
- ///
- ///
- /// Using this constructor for a field/property tells the code generator to
- /// generate validation for the individual members of the field/property's type.
- ///
- public ValidateObjectMembersAttribute()
- {
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// A type that implements for the field/property's type.
- ///
- /// Using this constructor for a field/property tells the code generator to use the given type to validate
- /// the object held by the field/property.
- ///
- public ValidateObjectMembersAttribute(Type validator)
- {
- Validator = validator;
- }
-
- ///
- /// Gets the type to use to validate a field or property.
- ///
- public Type? Validator { get; }
-}
diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.props b/src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.props
deleted file mode 100644
index 7bc91e44385..00000000000
--- a/src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.props
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.targets b/src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.targets
deleted file mode 100644
index ceadfacb28c..00000000000
--- a/src/Libraries/Microsoft.Extensions.Options.Validation/buildTransitive/Microsoft.Extensions.Options.Validation.targets
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionExtensions.cs b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionExtensions.cs
index 315decc55e3..f57611abe36 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionExtensions.cs
@@ -125,7 +125,7 @@ public static Context WithFaultInjection(this Context context, string groupName)
///
/// Any of the parameters are .
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static Context WithFaultInjection(this Context context, FaultPolicyWeightAssignmentsOptions weightAssignments)
{
_ = Throw.IfNull(context);
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionOptionsBuilder.cs b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionOptionsBuilder.cs
index eb126f6615f..93d68bd3c86 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionOptionsBuilder.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/FaultInjectionOptionsBuilder.cs
@@ -126,7 +126,7 @@ public FaultInjectionOptionsBuilder AddException(string key, Exception exception
///
/// is an empty string or .
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public FaultInjectionOptionsBuilder AddCustomResult(string key, object customResult)
{
_ = Throw.IfNull(customResult);
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/IChaosPolicyFactory.cs b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/IChaosPolicyFactory.cs
index f89120b5073..32906ec0217 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/IChaosPolicyFactory.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/IChaosPolicyFactory.cs
@@ -40,6 +40,6 @@ public interface IChaosPolicyFactory
///
/// The type of value policies created by this method will inject.
/// A custom result policy, an instance of .
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public AsyncInjectOutcomePolicy CreateCustomResultPolicy();
}
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/ChaosPolicyOptionsGroup.cs b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/ChaosPolicyOptionsGroup.cs
index 13473760cc1..ee261e4c747 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/ChaosPolicyOptionsGroup.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/ChaosPolicyOptionsGroup.cs
@@ -2,7 +2,7 @@
// The .NET Foundation licenses this file to you under the MIT license.
using System.Diagnostics.CodeAnalysis;
-using Microsoft.Extensions.Options.Validation;
+using Microsoft.Extensions.Options;
namespace Microsoft.Extensions.Resilience.FaultInjection;
@@ -42,6 +42,6 @@ public class ChaosPolicyOptionsGroup
/// Gets or sets the custom result policy options of the chaos policy options group.
///
[ValidateObjectMembers]
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public CustomResultPolicyOptions? CustomResultPolicyOptions { get; set; }
}
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/CustomResultPolicyOptions.cs b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/CustomResultPolicyOptions.cs
index 92cea07fe31..8fd856fbe58 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/CustomResultPolicyOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/CustomResultPolicyOptions.cs
@@ -9,7 +9,7 @@ namespace Microsoft.Extensions.Resilience.FaultInjection;
///
/// Custom Result chaos policy options definition.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public class CustomResultPolicyOptions : ChaosPolicyOptionsBase
{
///
@@ -20,7 +20,7 @@ public class CustomResultPolicyOptions : ChaosPolicyOptionsBase
/// from .
/// Default is set to .
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[Required]
public string CustomResultKey { get; set; } = string.Empty;
}
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/FaultPolicyWeightAssignmentsOptions.cs b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/FaultPolicyWeightAssignmentsOptions.cs
index 05254afa450..53daba3e416 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/FaultPolicyWeightAssignmentsOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/FaultInjection/Options/FaultPolicyWeightAssignmentsOptions.cs
@@ -9,7 +9,7 @@ namespace Microsoft.Extensions.Resilience.FaultInjection;
///
/// Class to contain fault-injection policy weight assignments.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public class FaultPolicyWeightAssignmentsOptions
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Microsoft.Extensions.Resilience.csproj b/src/Libraries/Microsoft.Extensions.Resilience/Microsoft.Extensions.Resilience.csproj
index 24fddc1e8f9..4205a709204 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Microsoft.Extensions.Resilience.csproj
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Microsoft.Extensions.Resilience.csproj
@@ -8,7 +8,6 @@
true
true
- true
true
true
true
@@ -27,7 +26,6 @@
-
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/PipelineId.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/PipelineId.cs
index 94afb13edd6..4c995c9bcc6 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/PipelineId.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/PipelineId.cs
@@ -9,7 +9,7 @@ namespace Microsoft.Extensions.Resilience.Internal;
///
/// Composite key for the pipeline.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
internal sealed record PipelineId(string PipelineName, string PipelineKey, string? ResultType, string PolicyPipelineKey)
{
///
@@ -19,7 +19,7 @@ internal sealed record PipelineId(string PipelineName, string PipelineKey, strin
/// The pipeline name.
/// The pipeline key.
/// The pipeline id instance.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static PipelineId Create(string pipelineName, string pipelineKey)
{
var policyPipelineKey = string.IsNullOrEmpty(pipelineKey) ? $"{typeof(T).Name}-{pipelineName}" : $"{typeof(T).Name}-{pipelineName}-{pipelineKey}";
@@ -33,7 +33,7 @@ public static PipelineId Create(string pipelineName, string pipelineKey)
/// The pipeline name.
/// The pipeline key.
/// The pipeline id instance.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static PipelineId Create(string pipelineName, string pipelineKey)
{
var policyPipelineKey = string.IsNullOrEmpty(pipelineKey) ? pipelineName : $"{pipelineName}-{pipelineKey}";
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/BulkheadPolicyOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/BulkheadPolicyOptionsValidator.cs
index 933add3b643..936851360e0 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/BulkheadPolicyOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/BulkheadPolicyOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
using Microsoft.Extensions.Resilience.Options;
namespace Microsoft.Extensions.Resilience.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidator.cs
index b9e44fb2c27..697662e702d 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
using Microsoft.Extensions.Resilience.Options;
namespace Microsoft.Extensions.Resilience.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidatorT.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidatorT.cs
index 1721378ee28..f206d6f5b60 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidatorT.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/CircuitBreakerPolicyOptionsValidatorT.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
using Microsoft.Extensions.Resilience.Options;
namespace Microsoft.Extensions.Resilience.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidator.cs
index 96912a27e8c..c337243b3e8 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
using Microsoft.Extensions.Resilience.Options;
namespace Microsoft.Extensions.Resilience.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidatorT.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidatorT.cs
index 7a01df2ddfb..d96ec809a5d 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidatorT.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/HedgingPolicyOptionsValidatorT.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
using Microsoft.Extensions.Resilience.Options;
namespace Microsoft.Extensions.Resilience.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidator.cs
index 79de3d93c12..0e5267a1be0 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
using Microsoft.Extensions.Resilience.Options;
namespace Microsoft.Extensions.Resilience.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidatorT.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidatorT.cs
index 4f17bf0bbb0..80c1abb7fc0 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidatorT.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/RetryPolicyOptionsValidatorT.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
using Microsoft.Extensions.Resilience.Options;
namespace Microsoft.Extensions.Resilience.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/TimeoutPolicyOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/TimeoutPolicyOptionsValidator.cs
index a12aee93c2c..adfd092cebf 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/TimeoutPolicyOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/Internals/Validators/Generated/TimeoutPolicyOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
using Microsoft.Extensions.Resilience.Options;
namespace Microsoft.Extensions.Resilience.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Polly/ResilienceDimensions.cs b/src/Libraries/Microsoft.Extensions.Resilience/Polly/ResilienceDimensions.cs
index 52705a74e0a..a4343075435 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Polly/ResilienceDimensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Polly/ResilienceDimensions.cs
@@ -15,77 +15,77 @@ namespace Microsoft.Extensions.Resilience;
/// Constants are standardized in MS Common Schema.
///
// Avoid changing const values in this class by all means. Such a breaking change would break customer's monitoring.
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EditorBrowsable(EditorBrowsableState.Never)]
public static class ResilienceDimensions
{
///
/// Pipeline name.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string PipelineName = "pipeline_name";
///
/// Pipeline key.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string PipelineKey = "pipeline_key";
///
/// Result type.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string ResultType = "result_type";
///
/// Policy name.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string PolicyName = "policy_name";
///
/// Event name.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string EventName = "event_name";
///
/// Failure source.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string FailureSource = "failure_source";
///
/// Failure reason.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string FailureReason = "failure_reason";
///
/// Failure summary.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string FailureSummary = "failure_summary";
///
/// Dependency name.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string DependencyName = "dep_name";
///
/// Request name.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EditorBrowsable(EditorBrowsableState.Never)]
public const string RequestName = "req_name";
@@ -93,7 +93,7 @@ public static class ResilienceDimensions
/// Gets a list of all dimension names.
///
/// A read-only of all dimension names.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[EditorBrowsable(EditorBrowsableState.Never)]
public static IReadOnlyList DimensionNames { get; } =
Array.AsReadOnly(new[]
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/OptionsBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/OptionsBuilderExtensions.cs
index 0bff0195411..2a7fd66022a 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/OptionsBuilderExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/OptionsBuilderExtensions.cs
@@ -13,7 +13,7 @@ namespace Microsoft.Extensions.Resilience.Internal;
///
/// Extensions for .
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
internal static class OptionsBuilderExtensions
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineBuilderExtensions.cs b/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineBuilderExtensions.cs
index bc3e5c58506..9a6106c6e0b 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineBuilderExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineBuilderExtensions.cs
@@ -15,7 +15,7 @@ namespace Microsoft.Extensions.Resilience.Internal;
/// Pub-internal extension methods for the .
///
/// Do not use this class directly, it's reserved for internal use and can change at any time.
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
internal static class ResiliencePipelineBuilderExtensions
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineFactoryOptionsValidatorT.cs b/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineFactoryOptionsValidatorT.cs
index 12b23fc8587..11d677c1883 100644
--- a/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineFactoryOptionsValidatorT.cs
+++ b/src/Libraries/Microsoft.Extensions.Resilience/Resilience/Internal/ResiliencePipelineFactoryOptionsValidatorT.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Resilience.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Http/TelemetryConstants.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Http/TelemetryConstants.cs
index 7ccb595318c..e942a25099d 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Http/TelemetryConstants.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Http/TelemetryConstants.cs
@@ -28,12 +28,12 @@ public static class TelemetryConstants
///
/// Header for client application name, sent on an outgoing http call.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public const string ClientApplicationNameHeader = "X-ClientApplication";
///
/// Header for server application name, sent on a http request.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public const string ServerApplicationNameHeader = "X-ServerApplication";
}
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Logging/LogMethodAttribute.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Logging/LogMethodAttribute.cs
index 5942a141091..8e7659d3cc2 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Logging/LogMethodAttribute.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Logging/LogMethodAttribute.cs
@@ -266,7 +266,7 @@ public LogMethodAttribute(int eventId)
/// }
///
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public LogMethodAttribute()
{
EventId = 0;
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeterT.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeterT.cs
index 6726b6cd6d2..3f2f6a034ab 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeterT.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeterT.cs
@@ -12,13 +12,13 @@ namespace Microsoft.Extensions.Telemetry.Metering;
/// A meter class where the meter name is derived from the specified type name.
///
/// The type whose name is used as the meter name.
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public class Meter : Meter
{
///
/// Initializes a new instance of the class.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public Meter()
: base(typeof(TMeterName).FullName!)
{
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeteringExtensions.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeteringExtensions.cs
index e69dbb13093..a4f6354dabc 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeteringExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry.Abstractions/Metering/MeteringExtensions.cs
@@ -17,7 +17,7 @@ public static class MeteringExtensions
///
/// The dependency injection container to register metering into.
/// The value of .
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IServiceCollection RegisterMetering(this IServiceCollection services)
{
services.TryAdd(ServiceDescriptor.Singleton(typeof(Meter<>), typeof(Meter<>)));
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/CollectedMeasurement.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/CollectedMeasurement.cs
index c3624db32c0..687a62b44d7 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/CollectedMeasurement.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/CollectedMeasurement.cs
@@ -14,7 +14,7 @@ namespace Microsoft.Extensions.Telemetry.Testing.Metering;
/// Represents a single measurement performed by an instrument.
///
/// The type of metric measurement value.
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[DebuggerDisplay("{DebuggerToString(),nq}")]
public sealed class CollectedMeasurement
where T : struct
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MeasurementExtensions.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MeasurementExtensions.cs
index 9986306f002..ee8bed03241 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MeasurementExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MeasurementExtensions.cs
@@ -11,7 +11,7 @@ namespace Microsoft.Extensions.Telemetry.Testing.Metering;
///
/// Extensions to simplify working with lists of measurements.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static class MeasurementExtensions
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MetricCollector.cs b/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MetricCollector.cs
index 4d162b9b5ab..cdf8405b73f 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MetricCollector.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry.Testing/Metering/MetricCollector.cs
@@ -1,4 +1,4 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
@@ -17,7 +17,7 @@ namespace Microsoft.Extensions.Telemetry.Testing.Metering;
/// Collects the measurements published from an or .
///
/// The type of metric data being recorded.
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[DebuggerDisplay("{_measurements.Count} measurements")]
public sealed class MetricCollector : IDisposable
where T : struct
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggerProvider.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggerProvider.cs
index b913abc9027..7a724330783 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggerProvider.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggerProvider.cs
@@ -19,7 +19,7 @@ namespace Microsoft.Extensions.Telemetry.Logging;
/// OpenTelemetry Logger provider class.
///
[ProviderAlias("R9")]
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public sealed class LoggerProvider : BaseProvider, ILoggerProvider, ISupportExternalScope
{
private const int ProcessorShutdownGracePeriodInMs = 5000;
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptions.cs
index 1188d2f7e11..8cdc35b2251 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptions.cs
@@ -59,7 +59,7 @@ public class LoggingOptions
///
/// When set to a value less than 2 KB or greater than 32 KB, an exception will be thrown.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
[Range(MinDefinedStackTraceLength, MaxDefinedStackTraceLength, ErrorMessage = "Maximum stack trace length should be between 2kb and 32kb")]
public int MaxStackTraceLength { get; set; } = DefaultStackTraceLength;
}
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptionsValidator.cs
index 9d9489c9a66..3f396c504e6 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Logging/LoggingOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Telemetry.Logging;
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/EventCountersCollectorOptions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/EventCountersCollectorOptions.cs
index 2bb199698a3..d9be1869744 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/EventCountersCollectorOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/EventCountersCollectorOptions.cs
@@ -69,7 +69,7 @@ public class EventCountersCollectorOptions
/// EventSource: "Microsoft-AspNetCore-Server-Kestrel", Counters:
/// - "connection-queue-length", "request-queue-length".
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public bool IncludeRecommendedDefault { get; set; }
#if NET5_0_OR_GREATER
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/Internal/EventCountersCollectorOptionsValidator.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/Internal/EventCountersCollectorOptionsValidator.cs
index 8eb3e85bc89..0c70de10791 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/Internal/EventCountersCollectorOptionsValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Metering.Collectors.EventCounters/Internal/EventCountersCollectorOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Telemetry.Metering.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Metering/MeteringOptions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Metering/MeteringOptions.cs
index 76b4234fd6f..141a982c8f4 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Metering/MeteringOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Metering/MeteringOptions.cs
@@ -9,7 +9,7 @@ namespace Microsoft.Extensions.Telemetry.Metering;
///
/// Options for configuring metering.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public class MeteringOptions
{
///
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Metering/OTelMeteringExtensions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Metering/OTelMeteringExtensions.cs
index 688762886bc..3fccb6ef825 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Metering/OTelMeteringExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Metering/OTelMeteringExtensions.cs
@@ -14,7 +14,7 @@ namespace Microsoft.Extensions.Telemetry.Metering;
///
/// Metering extensions for OpenTelemetry based metrics.
///
-[Experimental]
+[Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static class OTelMeteringExtensions
{
///
@@ -22,7 +22,7 @@ public static class OTelMeteringExtensions
///
/// instance.
/// Returns for chaining.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static MeterProviderBuilder AddMetering(
this MeterProviderBuilder builder)
{
@@ -35,7 +35,7 @@ public static MeterProviderBuilder AddMetering(
/// instance.
/// Configuration section that contains .
/// Returns for chaining.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static MeterProviderBuilder AddMetering(
this MeterProviderBuilder builder,
IConfigurationSection configurationSection)
@@ -52,7 +52,7 @@ public static MeterProviderBuilder AddMetering(
/// instance.
/// The configuration delegate.
/// Returns for chaining.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static MeterProviderBuilder AddMetering(
this MeterProviderBuilder builder,
Action configure)
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Microsoft.Extensions.Telemetry.csproj b/src/Libraries/Microsoft.Extensions.Telemetry/Microsoft.Extensions.Telemetry.csproj
index 026721a8001..31890f7372b 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Microsoft.Extensions.Telemetry.csproj
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Microsoft.Extensions.Telemetry.csproj
@@ -16,7 +16,6 @@
true
true
true
- true
@@ -29,12 +28,12 @@
-
+
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry.Internal/IHttpRouteFormatter.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry.Internal/IHttpRouteFormatter.cs
index f109271773f..258e30afd33 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry.Internal/IHttpRouteFormatter.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry.Internal/IHttpRouteFormatter.cs
@@ -21,7 +21,7 @@ internal interface IHttpRouteFormatter
/// Strategy to decide how parameters are redacted.
/// Dictionary of parameters with their data classification that needs to be redacted.
/// Returns formatted path with sensitive parameter values redacted.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
string Format(string httpRoute, string httpPath, HttpRouteParameterRedactionMode redactionMode, IReadOnlyDictionary parametersToRedact);
///
@@ -32,6 +32,6 @@ internal interface IHttpRouteFormatter
/// Strategy to decide how parameters are redacted.
/// Dictionary of parameters with their data classification that needs to be redacted.
/// Returns formatted path with sensitive parameter values redacted.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
string Format(in ParsedRouteSegments routeSegments, string httpPath, HttpRouteParameterRedactionMode redactionMode, IReadOnlyDictionary parametersToRedact);
}
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry/TelemetryExtensions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry/TelemetryExtensions.cs
index 1d106201a91..911759ca8d1 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry/TelemetryExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Telemetry/TelemetryExtensions.cs
@@ -25,7 +25,7 @@ public static class TelemetryExtensions
///
/// object.
/// Metadata for the request.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static void SetRequestMetadata(this HttpWebRequest request, RequestMetadata metadata)
{
_ = Throw.IfNull(request);
@@ -58,7 +58,7 @@ public static void SetRequestMetadata(this HttpRequestMessage request, RequestMe
///
/// object.
/// Request metadata.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static RequestMetadata? GetRequestMetadata(this HttpWebRequest request)
{
_ = Throw.IfNull(request);
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/Internal/SamplingOptionsAutoValidator.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/Internal/SamplingOptionsAutoValidator.cs
index 083fd1c358f..6ad25eb2e93 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/Internal/SamplingOptionsAutoValidator.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/Internal/SamplingOptionsAutoValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Telemetry.Tracing.Internal;
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/ParentBasedSamplerOptions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/ParentBasedSamplerOptions.cs
index aee2e9731ea..b77dffb8eba 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/ParentBasedSamplerOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/ParentBasedSamplerOptions.cs
@@ -1,7 +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 Microsoft.Extensions.Options.Validation;
+using Microsoft.Extensions.Options;
namespace Microsoft.Extensions.Telemetry.Tracing;
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/SamplingOptions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/SamplingOptions.cs
index 5c109e773bc..a91b19dcce8 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/SamplingOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing.Sampling/SamplingOptions.cs
@@ -1,7 +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 Microsoft.Extensions.Options.Validation;
+using Microsoft.Extensions.Options;
namespace Microsoft.Extensions.Telemetry.Tracing;
diff --git a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing/TracingEnricherExtensions.cs b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing/TracingEnricherExtensions.cs
index 36cc62c5b47..76854f58e0d 100644
--- a/src/Libraries/Microsoft.Extensions.Telemetry/Tracing/TracingEnricherExtensions.cs
+++ b/src/Libraries/Microsoft.Extensions.Telemetry/Tracing/TracingEnricherExtensions.cs
@@ -53,7 +53,7 @@ public static TracerProviderBuilder AddTraceEnricher(this TracerProviderBuilder
/// The to add this enricher to.
/// The so that additional calls can be chained.
/// The argument is .
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IServiceCollection AddTraceEnricher(this IServiceCollection services)
where T : class, ITraceEnricher
{
@@ -71,7 +71,7 @@ public static IServiceCollection AddTraceEnricher(this IServiceCollection ser
/// Enricher to be added.
/// The so that additional calls can be chained.
/// The argument or is .
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static IServiceCollection AddTraceEnricher(this IServiceCollection services, ITraceEnricher enricher)
{
_ = Throw.IfNull(services);
diff --git a/src/Libraries/Microsoft.Extensions.TimeProvider.Testing/FakeTimeProvider.cs b/src/Libraries/Microsoft.Extensions.TimeProvider.Testing/FakeTimeProvider.cs
index 55c8310299b..b45f50d29f8 100644
--- a/src/Libraries/Microsoft.Extensions.TimeProvider.Testing/FakeTimeProvider.cs
+++ b/src/Libraries/Microsoft.Extensions.TimeProvider.Testing/FakeTimeProvider.cs
@@ -1,4 +1,4 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
@@ -30,7 +30,7 @@ public class FakeTimeProvider : TimeProvider
/// This creates a provider whose time is initially set to midnight January 1st 2000.
/// The provider is set to not automatically advance time each time it is read.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public FakeTimeProvider()
{
Start = _now;
@@ -43,7 +43,7 @@ public FakeTimeProvider()
///
/// The provider is set to not automatically advance time each time it is read.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public FakeTimeProvider(DateTimeOffset startDateTime)
{
_ = Throw.IfLessThan(startDateTime.Ticks, 0);
@@ -55,7 +55,7 @@ public FakeTimeProvider(DateTimeOffset startDateTime)
///
/// Gets the starting date and time for this provider.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public DateTimeOffset Start { get; }
///
@@ -64,7 +64,7 @@ public FakeTimeProvider(DateTimeOffset startDateTime)
///
/// This defaults to .
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public TimeSpan AutoAdvanceAmount
{
get => _autoAdvanceAmount;
@@ -94,7 +94,7 @@ public override DateTimeOffset GetUtcNow()
/// Sets the date and time in the UTC time zone.
///
/// The date and time in the UTC time zone.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public void SetUtcNow(DateTimeOffset value)
{
lock (Waiters)
@@ -120,7 +120,7 @@ public void SetUtcNow(DateTimeOffset value)
/// marches forward automatically in hardware, for the fake time provider the application is responsible for
/// doing this explicitly by calling this method.
///
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public void Advance(TimeSpan delta)
{
_ = Throw.IfLessThan(delta.Ticks, 0);
@@ -155,7 +155,7 @@ public override long GetTimestamp()
/// Sets the local time zone.
///
/// The local time zone.
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public void SetLocalTimeZone(TimeZoneInfo localTimeZone) => _localTimeZone = localTimeZone;
///
diff --git a/src/ToBeMoved/Hosting.StartupInitialization/Hosting.StartupInitialization.csproj b/src/ToBeMoved/Hosting.StartupInitialization/Hosting.StartupInitialization.csproj
index 58974307386..6efbe56cc68 100644
--- a/src/ToBeMoved/Hosting.StartupInitialization/Hosting.StartupInitialization.csproj
+++ b/src/ToBeMoved/Hosting.StartupInitialization/Hosting.StartupInitialization.csproj
@@ -6,7 +6,6 @@
Provides infrastructure to execute asynchronous functions on server startups
Fundamentals
Application Bootstrap
- true
true
true
true
@@ -28,7 +27,6 @@
-
diff --git a/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationBuilder.cs b/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationBuilder.cs
index 6c70493a12c..c82281e9cae 100644
--- a/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationBuilder.cs
+++ b/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationBuilder.cs
@@ -6,7 +6,6 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
-using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options.Validation;
using Microsoft.Shared.Diagnostics;
diff --git a/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationOptionsValidator.cs b/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationOptionsValidator.cs
index a15058129ea..20b926881e5 100644
--- a/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationOptionsValidator.cs
+++ b/src/ToBeMoved/Hosting.StartupInitialization/Internal/StartupInitializationOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.Hosting.Testing.Internal;
diff --git a/src/ToBeMoved/Hosting.StartupInitialization/StartupInitializationExtensions.cs b/src/ToBeMoved/Hosting.StartupInitialization/StartupInitializationExtensions.cs
index 31276de6c92..00371c48685 100644
--- a/src/ToBeMoved/Hosting.StartupInitialization/StartupInitializationExtensions.cs
+++ b/src/ToBeMoved/Hosting.StartupInitialization/StartupInitializationExtensions.cs
@@ -6,6 +6,7 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting.Testing.Internal;
+using Microsoft.Extensions.Options;
using Microsoft.Extensions.Options.Validation;
using Microsoft.Shared.Diagnostics;
diff --git a/src/ToBeMoved/HttpClient.SocketHandling/HttpClient.SocketHandling.csproj b/src/ToBeMoved/HttpClient.SocketHandling/HttpClient.SocketHandling.csproj
index 288becef1e3..03b7a3f67da 100644
--- a/src/ToBeMoved/HttpClient.SocketHandling/HttpClient.SocketHandling.csproj
+++ b/src/ToBeMoved/HttpClient.SocketHandling/HttpClient.SocketHandling.csproj
@@ -7,7 +7,6 @@
Fundamentals
HTTP Processing
$(NetCoreTargetFrameworks)
- true
true
@@ -23,7 +22,6 @@
-
diff --git a/src/ToBeMoved/HttpClient.SocketHandling/SocketsHttpHandlerOptionsValidator.cs b/src/ToBeMoved/HttpClient.SocketHandling/SocketsHttpHandlerOptionsValidator.cs
index c5c343d8ef2..4a05de361d1 100644
--- a/src/ToBeMoved/HttpClient.SocketHandling/SocketsHttpHandlerOptionsValidator.cs
+++ b/src/ToBeMoved/HttpClient.SocketHandling/SocketsHttpHandlerOptionsValidator.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
namespace Microsoft.Extensions.HttpClient.SocketHandling;
diff --git a/test/Analyzers/Microsoft.Extensions.ExtraAnalyzers/Common/UsingExperimentalApiAnalyzerTest.cs b/test/Analyzers/Microsoft.Extensions.ExtraAnalyzers/Common/UsingExperimentalApiAnalyzerTest.cs
index 972b29df052..3e2771f0a7e 100644
--- a/test/Analyzers/Microsoft.Extensions.ExtraAnalyzers/Common/UsingExperimentalApiAnalyzerTest.cs
+++ b/test/Analyzers/Microsoft.Extensions.ExtraAnalyzers/Common/UsingExperimentalApiAnalyzerTest.cs
@@ -13,19 +13,12 @@ public static class UsingExperimentalApiAnalyzerTest
[MemberData(nameof(TestData))]
public static async Task Common(string source)
{
- const string AttributeSource = @"
- namespace System.Diagnostics.CodeAnalysis
- {
- public sealed class ExperimentalAttribute : System.Attribute { }
- }";
-
var d = await RoslynTestUtils.RunAnalyzer(
new UsingExperimentalApiAnalyzer(),
null,
new[]
{
source,
- AttributeSource,
}).ConfigureAwait(false);
var expectedCount = source.CountSpans();
@@ -67,7 +60,7 @@ public void Test()
}
}
- [Experimental]
+ [Experimental(diagnosticId: ""TBD"", UrlFormat = ""TBD"")]
public class ExpClass
{
}
@@ -81,7 +74,7 @@ public class ExpClass
using System.Diagnostics.CodeAnalysis;
#pragma warning disable R9A029
- [assembly: Experimental]
+ [assembly: Experimental(diagnosticId: ""TBD"", UrlFormat = ""TBD"")]
#pragma warning restore R9A029
public class TestClass : /*0+*/ExpClass/*-0*/
diff --git a/test/Analyzers/Microsoft.Extensions.LocalAnalyzers/ApiLifecycle/ApiLifecycleAnalyzerTest.cs b/test/Analyzers/Microsoft.Extensions.LocalAnalyzers/ApiLifecycle/ApiLifecycleAnalyzerTest.cs
index 4f81b21e6fd..379a0fe65df 100644
--- a/test/Analyzers/Microsoft.Extensions.LocalAnalyzers/ApiLifecycle/ApiLifecycleAnalyzerTest.cs
+++ b/test/Analyzers/Microsoft.Extensions.LocalAnalyzers/ApiLifecycle/ApiLifecycleAnalyzerTest.cs
@@ -228,7 +228,7 @@ namespace Microsoft.Extensions.Security.Identity;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public class AdditionalContext2
{
protected IReadOnlyDictionary Features { get; } = new Dictionary();
@@ -347,7 +347,7 @@ public sealed class BufferWriter2 : IBufferWriter
private T[] _buffer = Array.Empty();
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public BufferWriter2() { }
public ReadOnlyMemory WrittenMemory => _buffer.AsMemory(0, WrittenCount);
@@ -474,7 +474,7 @@ public interface IClassifiedData
public DataClass DataClass { get; }
}
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public enum DataClass
{
@@ -562,10 +562,10 @@ namespace SomePackage;
using System.Diagnostics.CodeAnalysis;
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static class Test
{
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public static void Load()
{
// Intentionally left empty.
@@ -707,7 +707,7 @@ namespace Microsoft.Extensions.Diagnostics;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public class WindowsCountersOptions2
{
[Required]
@@ -728,7 +728,7 @@ namespace Test;
using System.Diagnostics.CodeAnalysis;
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public sealed class BufferWriter
{
internal const int MaxArrayLength = 0X7FEF_FFFF; // Copy of the internal Array.MaxArrayLength const
@@ -751,7 +751,7 @@ namespace Inheritance;
using System.Diagnostics.CodeAnalysis;
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public class BaseType
{
public virtual int P => 1;
@@ -774,7 +774,7 @@ namespace Nested;
using System.Diagnostics.CodeAnalysis;
- [Experimental]
+ [Experimental(diagnosticId: "TBD", UrlFormat = "TBD")]
public class OuterType
{
public int ReadValue(string s) => new InnerType().P;
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/CustomAttrTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/CustomAttrTests.cs
deleted file mode 100644
index 9770924b5b1..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/CustomAttrTests.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using CustomAttr;
-using Microsoft.Extensions.Options;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class CustomAttrTests
-{
- [Fact]
- public void Invalid()
- {
- var firstModel = new FirstModel
- {
- P1 = 'a',
- P2 = 'x',
- };
-
- var validator = new FirstValidator();
- var vr = validator.Validate("CustomAttr", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 2, "P1", "P2");
- }
-
- [Fact]
- public void Valid()
- {
- var firstModel = new FirstModel
- {
- P1 = 'A',
- P2 = 'A',
- };
-
- var validator = new FirstValidator();
- Assert.Equal(ValidateOptionsResult.Success, validator.Validate("CustomAttr", firstModel));
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/EnumerationTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/EnumerationTests.cs
deleted file mode 100644
index d2f9bddca28..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/EnumerationTests.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using Enumeration;
-using Microsoft.Extensions.Options;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class EnumerationTests
-{
- [Fact]
- public void Invalid()
- {
- var secondModelC = new SecondModel
- {
- P6 = "1234",
- };
-
- var secondModelB = new SecondModel
- {
- P6 = "12345",
- };
-
- var secondModel = new SecondModel
- {
- P6 = "1234",
- };
-
- ThirdModel? thirdModel = new ThirdModel
- {
- Value = 11
- };
-
- var firstModel = new FirstModel
- {
- P1 = new[] { secondModel },
- P2 = new[] { secondModel, secondModelB, secondModelC },
- P51 = new[] { thirdModel }
- };
-
- var validator = default(FirstValidator);
- var vr = validator.Validate("Enumeration", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 4, "P1[0].P6", "P2[0].P6", "P2[2].P6", "P51[0].Value");
- }
-
- [Fact]
- public void NullElement()
- {
- var firstModel = new FirstModel
- {
- P1 = new[] { (SecondModel)null! },
- };
-
- var validator = default(FirstValidator);
- var vr = validator.Validate("Enumeration", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 1, "P1[0]");
- }
-
- [Fact]
- public void Valid()
- {
- var secondModel = new SecondModel
- {
- P6 = "12345",
- };
-
- var thirdModelA = new ThirdModel
- {
- Value = 2
- };
-
- var thirdModelB = new ThirdModel
- {
- Value = 9
- };
-
- var firstModel = new FirstModel
- {
- P1 = new[] { secondModel },
- P2 = new[] { secondModel },
- P3 = new[] { (SecondModel?)null },
- P4 = new[] { thirdModelA, thirdModelB },
- P5 = new ThirdModel?[] { thirdModelA, default },
- P51 = new ThirdModel?[] { thirdModelB, default }
- };
-
- var validator = default(FirstValidator);
- Assert.Equal(ValidateOptionsResult.Success, validator.Validate("Enumeration", firstModel));
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FieldTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FieldTests.cs
deleted file mode 100644
index 3656d4f359e..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FieldTests.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using Fields;
-using Microsoft.Extensions.Options;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class FieldTests
-{
- [Fact]
- public void Invalid()
- {
- var thirdModel = new ThirdModel
- {
- P5 = "1234",
- };
-
- var secondModel = new SecondModel
- {
- P4 = "1234",
- };
-
- var firstModel = new FirstModel
- {
- P1 = "1234",
- P2 = secondModel,
- P3 = thirdModel,
- };
-
- var validator = default(FirstValidator);
- var vr = validator.Validate("Fields", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 3, "P1", "P2.P4", "P3.P5");
- }
-
- [Fact]
- public void Valid()
- {
- var thirdModel = new ThirdModel
- {
- P5 = "12345",
- P6 = 1
- };
-
- var secondModel = new SecondModel
- {
- P4 = "12345",
- };
-
- var firstModel = new FirstModel
- {
- P1 = "12345",
- P2 = secondModel,
- P3 = thirdModel,
- };
-
- var validator = default(FirstValidator);
- Assert.Equal(ValidateOptionsResult.Success, validator.Validate("Fields", firstModel));
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FunnyStringsTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FunnyStringsTests.cs
deleted file mode 100644
index 29b62a5c4b4..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/FunnyStringsTests.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using FunnyStrings;
-using Microsoft.Extensions.Options;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class FunnyStringsTests
-{
- [Fact]
- public void Invalid()
- {
- var firstModel = new FirstModel
- {
- P1 = "XXX",
- };
-
- var validator = default(FirstValidator);
- var vr = validator.Validate("FunnyStrings", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 1, "P1");
- }
-
- [Fact]
- public void Valid()
- {
- var firstModel = new FirstModel
- {
- P1 = "\"\r\n\\",
- };
-
- var validator = default(FirstValidator);
- Assert.Equal(ValidateOptionsResult.Success, validator.Validate("FunnyStrings", firstModel));
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/GenericsTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/GenericsTests.cs
deleted file mode 100644
index 838fe529689..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/GenericsTests.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using Generics;
-using Microsoft.Extensions.Options;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class GenericsTests
-{
- [Fact]
- public void Invalid()
- {
- var secondModel = new SecondModel
- {
- P4 = "1234",
- };
-
- var firstModel = new FirstModel
- {
- P1 = "1234",
- P3 = secondModel,
- };
-
- var validator = new FirstValidator();
- var vr = validator.Validate("Generics", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 2, "P1", "P3.P4");
- }
-
- [Fact]
- public void Valid()
- {
- var secondModel = new SecondModel
- {
- P4 = "12345",
- };
-
- var firstModel = new FirstModel
- {
- P1 = "12345",
- P3 = secondModel,
- };
-
- var validator = new FirstValidator();
- Assert.Equal(ValidateOptionsResult.Success, validator.Validate("Generics", firstModel));
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/MultiModelValidatorTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/MultiModelValidatorTests.cs
deleted file mode 100644
index fff83ced918..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/MultiModelValidatorTests.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using Microsoft.Extensions.Options;
-using MultiModelValidator;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class MultiModelValidatorTests
-{
- [Fact]
- public void Invalid()
- {
- var secondModel = new SecondModel
- {
- P3 = "1234",
- };
-
- var firstModel = new FirstModel
- {
- P1 = "1234",
- P2 = secondModel,
- };
-
- var validator = default(MultiValidator);
- var vr = validator.Validate("MultiModelValidator", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 2, "P1", "P2.P3");
- }
-
- [Fact]
- public void Valid()
- {
- var secondModel = new SecondModel
- {
- P3 = "12345",
- };
-
- var firstModel = new FirstModel
- {
- P1 = "12345",
- P2 = secondModel,
- };
-
- var validator = default(MultiValidator);
- Assert.Equal(ValidateOptionsResult.Success, validator.Validate("MultiModelValidator", firstModel));
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NestedTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NestedTests.cs
deleted file mode 100644
index 8a4b04361a3..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NestedTests.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-#if ROSLYN_4_0_OR_GREATER
-
-using Microsoft.Extensions.Options;
-using Nested;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class NestedTests
-{
- [Fact]
- public void Invalid()
- {
- var thirdModel = new Container1.ThirdModel
- {
- P6 = "1234",
- };
-
- var secondModel = new Container1.SecondModel
- {
- P5 = "1234",
- };
-
- var firstModel = new Container1.FirstModel
- {
- P1 = "1234",
- P2 = secondModel,
- P3 = thirdModel,
- P4 = secondModel,
- };
-
- var validator = default(Container2.Container3.FirstValidator);
- var vr = validator.Validate("Nested", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 4, "P1", "P2.P5", "P3.P6", "P4.P5");
- }
-
- [Fact]
- public void Valid()
- {
- var thirdModel = new Container1.ThirdModel
- {
- P6 = "12345",
- };
-
- var secondModel = new Container1.SecondModel
- {
- P5 = "12345",
- };
-
- var firstModel = new Container1.FirstModel
- {
- P1 = "12345",
- P2 = secondModel,
- P3 = thirdModel,
- P4 = secondModel,
- };
-
- var validator = default(Container2.Container3.FirstValidator);
- Assert.Equal(ValidateOptionsResult.Success, validator.Validate("Nested", firstModel));
- }
-}
-
-#endif
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NoNamespaceTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NoNamespaceTests.cs
deleted file mode 100644
index 5530b639531..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/NoNamespaceTests.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using Microsoft.Extensions.Options;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class NoNamespaceTests
-{
- [Fact]
- public void Invalid()
- {
- var thirdModel = new ThirdModelNoNamespace
- {
- P5 = "1234",
- };
-
- var secondModel = new SecondModelNoNamespace
- {
- P4 = "1234",
- };
-
- var firstModel = new FirstModelNoNamespace
- {
- P1 = "1234",
- P2 = secondModel,
- P3 = thirdModel,
- };
-
- var validator = new FirstValidatorNoNamespace();
- var vr = validator.Validate("NoNamespace", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 3, "P1", "P2.P4", "P3.P5");
- }
-
- [Fact]
- public void Valid()
- {
- var thirdModel = new ThirdModelNoNamespace
- {
- P5 = "12345",
- };
-
- var secondModel = new SecondModelNoNamespace
- {
- P4 = "12345",
- };
-
- var firstModel = new FirstModelNoNamespace
- {
- P1 = "12345",
- P2 = secondModel,
- P3 = thirdModel,
- };
-
- var validator = new FirstValidatorNoNamespace();
- Assert.Equal(ValidateOptionsResult.Success, validator.Validate("NoNamespace", firstModel));
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/OptionsValidationTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/OptionsValidationTests.cs
deleted file mode 100644
index 49941010f1a..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/OptionsValidationTests.cs
+++ /dev/null
@@ -1,442 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.Globalization;
-using Microsoft.Extensions.Options;
-using TestClasses.OptionsValidation;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class OptionsValidationTests
-{
- [Fact]
- public void RequiredAttributeValid()
- {
- var validModel = new RequiredAttributeModel
- {
- Val = "val"
- };
-
- var modelValidator = new RequiredAttributeModelValidator();
- var result = modelValidator.Validate(nameof(validModel), validModel);
-
- Assert.Equal(ValidateOptionsResult.Success, result);
- }
-
- [Fact]
- public void RequiredAttributeInvalid()
- {
- var validModel = new RequiredAttributeModel
- {
- Val = null
- };
-
- var modelValidator = new RequiredAttributeModelValidator();
- Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1);
- }
-
- [Fact]
- public void RegularExpressionAttributeValid()
- {
- var validModel = new RegularExpressionAttributeModel
- {
- Val = " "
- };
-
- var modelValidator = new RegularExpressionAttributeModelValidator();
- var result = modelValidator.Validate(nameof(validModel), validModel);
-
- Assert.Equal(ValidateOptionsResult.Success, result);
- }
-
- [Fact]
- public void RegularExpressionAttributeInvalid()
- {
- var validModel = new RegularExpressionAttributeModel
- {
- Val = "Not Space"
- };
-
- var modelValidator = new RegularExpressionAttributeModelValidator();
- Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1);
- }
-
- [Fact]
- public void EmailAttributeValid()
- {
- var validModel = new EmailAttributeModel
- {
- Val = "abc@xyz.com"
- };
-
- var modelValidator = new EmailAttributeModelValidator();
- var result = modelValidator.Validate(nameof(validModel), validModel);
-
- Assert.Equal(ValidateOptionsResult.Success, result);
- }
-
- [Fact]
- public void EmailAttributeInvalid()
- {
- var validModel = new EmailAttributeModel
- {
- Val = "Not Email Address"
- };
-
- var modelValidator = new EmailAttributeModelValidator();
- Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1);
- }
-
- [Fact]
- public void CustomValidationAttributeValid()
- {
- var validModel = new CustomValidationAttributeModel
- {
- Val = "Pass"
- };
-
- var modelValidator = new CustomValidationAttributeModelValidator();
- var result = modelValidator.Validate(nameof(validModel), validModel);
-
- Assert.Equal(ValidateOptionsResult.Success, result);
- }
-
- [Fact]
- public void CustomValidationAttributeInvalid()
- {
- var validModel = new CustomValidationAttributeModel
- {
- Val = "NOT PASS"
- };
-
- var modelValidator = new CustomValidationAttributeModelValidator();
- Assert.Throws(() => modelValidator.Validate(nameof(validModel), validModel));
- }
-
- [Fact]
- public void DataTypeAttributeValid()
- {
- var validModel = new DataTypeAttributeModel
- {
- Val = "ABC"
- };
-
- var modelValidator = new DataTypeAttributeModelValidator();
- var result = modelValidator.Validate(nameof(validModel), validModel);
-
- Assert.Equal(ValidateOptionsResult.Success, result);
- }
-
- [Fact]
- public void RangeAttributeModelIntValid()
- {
- var validModel = new RangeAttributeModelInt
- {
- Val = 1
- };
-
- var modelValidator = new RangeAttributeModelIntValidator();
- var result = modelValidator.Validate(nameof(validModel), validModel);
-
- Assert.Equal(ValidateOptionsResult.Success, result);
- }
-
- [Fact]
- public void RangeAttributeModelIntInvalid()
- {
- var validModel = new RangeAttributeModelInt
- {
- Val = 0
- };
-
- var modelValidator = new RangeAttributeModelIntValidator();
- Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1);
- }
-
- [Fact]
- public void RangeAttributeModelDoubleValid()
- {
- var validModel = new RangeAttributeModelDouble
- {
- Val = 0.6
- };
-
- var modelValidator = new RangeAttributeModelDoubleValidator();
- var result = modelValidator.Validate(nameof(validModel), validModel);
-
- Assert.Equal(ValidateOptionsResult.Success, result);
- }
-
- [Fact]
- public void RangeAttributeModelDoubleInvalid()
- {
- var validModel = new RangeAttributeModelDouble
- {
- Val = 0.1
- };
-
- var modelValidator = new RangeAttributeModelDoubleValidator();
- Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1);
- }
-
- [Fact]
- public void RangeAttributeModelDateValid()
- {
-#if NETCOREAPP3_1_OR_GREATER
- // Setting non-invariant culture to check that
- // attribute's "ParseLimitsInInvariantCulture" property
- // was set up correctly in the validator:
- CultureInfo.CurrentCulture = new CultureInfo("cs");
-#else
- // Setting invariant culture to avoid DateTime parsing discrepancies:
- CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
-#endif
- var validModel = new RangeAttributeModelDate
- {
- Val = new DateTime(day: 3, month: 1, year: 2004)
- };
-
- var modelValidator = new RangeAttributeModelDateValidator();
- var result = modelValidator.Validate(nameof(validModel), validModel);
-
- Assert.Equal(ValidateOptionsResult.Success, result);
- }
-
- [Fact]
- public void RangeAttributeModelDateInvalid()
- {
- var validModel = new RangeAttributeModelDate
- {
- Val = new DateTime(day: 1, month: 1, year: 2004)
- };
-
- var modelValidator = new RangeAttributeModelDateValidator();
- Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1);
- }
-
- [Fact]
- public void MultipleAttributeModelValid()
- {
- var validModel = new MultipleAttributeModel
- {
- Val1 = "abc",
- Val2 = 2,
- Val3 = 4,
- Val4 = 6
- };
-
- var modelValidator = new MultipleAttributeModelValidator();
- var result = modelValidator.Validate(nameof(validModel), validModel);
-
- Assert.Equal(ValidateOptionsResult.Success, result);
- }
-
- [Theory]
- [InlineData("", 2, 4, 7)]
- [InlineData(null, 2, 4, 7)]
- [InlineData("abc", 0, 4, 9)]
- [InlineData("abc", 2, 8, 8)]
- [InlineData("abc", 2, 4, 10)]
- public void MultipleAttributeModelInvalid(string val1, int val2, int val3, int val4)
- {
- var validModel = new MultipleAttributeModel
- {
- Val1 = val1,
- Val2 = val2,
- Val3 = val3,
- Val4 = val4
- };
-
- var modelValidator = new MultipleAttributeModelValidator();
- Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1);
- }
-
- [Fact]
- public void CustomTypeCustomValidationAttributeModelValid()
- {
- var validModel = new CustomTypeCustomValidationAttributeModel
- {
- Val = new CustomType { Val1 = "Pass", Val2 = "Pass" }
- };
-
- var modelValidator = new CustomTypeCustomValidationAttributeModelValidator();
- var result = modelValidator.Validate(nameof(validModel), validModel);
-
- Assert.Equal(ValidateOptionsResult.Success, result);
- }
-
- [Fact]
- public void CustomTypeCustomValidationAttributeModelInvalid()
- {
- var validModel = new CustomTypeCustomValidationAttributeModel
- {
- Val = new CustomType { Val1 = "Pass", Val2 = "Not Pass" }
- };
-
- var modelValidator = new CustomTypeCustomValidationAttributeModelValidator();
- Assert.Throws(() => modelValidator.Validate(nameof(validModel), validModel));
- }
-
- [Fact]
- public void DerivedModelIsValid()
- {
- var validModel = new DerivedModel
- {
- Val = 1,
- DerivedVal = "Valid",
- VirtualValWithAttr = 1,
- VirtualValWithoutAttr = null
- };
-
- ((RequiredAttributeModel)validModel).Val = "Valid hidden member from base class";
-
- var validator = new DerivedModelValidator();
- var result = validator.Validate(nameof(validModel), validModel);
- Assert.Equal(ValidateOptionsResult.Success, result);
- }
-
- [Theory]
- [InlineData(0, "", 1, null, "Valid hidden member from base class")]
- [InlineData(null, "Valid", 1, null, "Valid hidden member from base class")]
- [InlineData(1, "Valid", null, null, "Valid hidden member from base class")]
- public void DerivedModelIsInvalid(int? val, string? derivedVal, int? virtValAttr, int? virtVal, string? hiddenValBaseClass)
- {
- var invalidModel = new DerivedModel
- {
- Val = val,
- DerivedVal = derivedVal,
- VirtualValWithAttr = virtValAttr,
- VirtualValWithoutAttr = virtVal
- };
-
- ((RequiredAttributeModel)invalidModel).Val = hiddenValBaseClass;
-
- var validator = new DerivedModelValidator();
- Utils.VerifyValidateOptionsResult(validator.Validate(nameof(invalidModel), invalidModel), 1);
- }
-
- [Fact]
- public void LeafModelIsValid()
- {
- var validModel = new LeafModel
- {
- Val = 1,
- DerivedVal = "Valid",
- VirtualValWithAttr = null,
- VirtualValWithoutAttr = 1
- };
-
- ((RequiredAttributeModel)validModel).Val = "Valid hidden member from base class";
-
- var validator = new LeafModelValidator();
- var result = validator.Validate(nameof(validModel), validModel);
- Assert.Equal(ValidateOptionsResult.Success, result);
- }
-
- [Fact]
- public void ComplexModelValid()
- {
- var validModel = new ComplexModel
- {
- ComplexVal = new RequiredAttributeModel { Val = "Valid" }
- };
-
- var modelValidator = new ComplexModelValidator();
- var result = modelValidator.Validate(nameof(validModel), validModel);
- Assert.Equal(ValidateOptionsResult.Success, result);
-
- validModel = new ComplexModel
- {
- ValWithoutOptionsValidator = new TypeWithoutOptionsValidator
- {
- Val1 = "Valid",
- Val2 = new DateTime(day: 3, month: 1, year: 2004)
- }
- };
-
- // Setting invariant culture to avoid DateTime parsing discrepancies:
- CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;
- result = modelValidator.Validate(nameof(validModel), validModel);
- Assert.Equal(ValidateOptionsResult.Success, result);
-
- validModel = new ComplexModel
- {
- ValWithoutOptionsValidator = new TypeWithoutOptionsValidator
- {
- Val1 = "A",
- Val2 = new DateTime(day: 2, month: 2, year: 2004),
- YetAnotherComplexVal = new RangeAttributeModelDouble { Val = 0.7 }
- }
- };
-
- result = modelValidator.Validate(nameof(validModel), validModel);
- Assert.Equal(ValidateOptionsResult.Success, result);
- }
-
- [Fact]
- public void ComplexModelInvalid()
- {
- var invalidModel = new ComplexModel
- {
- ComplexVal = new RequiredAttributeModel { Val = null }
- };
-
- var modelValidator = new ComplexModelValidator();
- Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(invalidModel), invalidModel), 1);
-
- invalidModel = new ComplexModel
- {
- ValWithoutOptionsValidator = new TypeWithoutOptionsValidator { Val1 = "Valid", Val2 = new DateTime(2003, 3, 3) }
- };
-
- Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(invalidModel), invalidModel), 1);
-
- invalidModel = new ComplexModel
- {
- ValWithoutOptionsValidator = new TypeWithoutOptionsValidator { Val1 = string.Empty, Val2 = new DateTime(2004, 3, 3) }
- };
-
- Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(invalidModel), invalidModel), 1);
-
- invalidModel = new ComplexModel
- {
- ValWithoutOptionsValidator = new TypeWithoutOptionsValidator
- {
- Val1 = "A",
- Val2 = new DateTime(2004, 2, 2),
- YetAnotherComplexVal = new RangeAttributeModelDouble { Val = 0.4999 }
- }
- };
-
- Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(invalidModel), invalidModel), 1);
- }
-
- [Fact]
- public void AttributePropertyModelTestOnErrorMessage()
- {
- var validModel = new AttributePropertyModel
- {
- Val1 = 5,
- Val2 = 1
- };
-
- var modelValidator = new AttributePropertyModelValidator();
- Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1);
- }
-
- [Fact]
- public void AttributePropertyModelTestOnErrorMessageResource()
- {
- var validModel = new AttributePropertyModel
- {
- Val1 = 1,
- Val2 = 5
- };
-
- var modelValidator = new AttributePropertyModelValidator();
- Utils.VerifyValidateOptionsResult(modelValidator.Validate(nameof(validModel), validModel), 1);
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RandomMembersTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RandomMembersTests.cs
deleted file mode 100644
index 1c87892b279..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RandomMembersTests.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using Microsoft.Extensions.Options;
-using RandomMembers;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class RandomMembersTests
-{
- [Fact]
- public void Invalid()
- {
- var firstModel = new FirstModel
- {
- P1 = "1234",
- };
-
- var validator = new FirstValidator();
- var vr = validator.Validate("RandomMembers", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 1, "P1");
- }
-
- [Fact]
- public void Valid()
- {
- var firstModel = new FirstModel
- {
- P1 = "12345",
- };
-
- var validator = new FirstValidator();
- Assert.Equal(ValidateOptionsResult.Success, validator.Validate("RandomMembers", firstModel));
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RecordTypesTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RecordTypesTests.cs
deleted file mode 100644
index bd0d872c8b6..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RecordTypesTests.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-#if ROSLYN_4_0_OR_GREATER
-
-using Microsoft.Extensions.Options;
-using RecordTypes;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class RecordTypesTests
-{
- [Fact]
- public void Invalid()
- {
- var thirdModel = new ThirdModel
- {
- P6 = "1234",
- };
-
- var secondModel = new SecondModel
- {
- P5 = "1234",
- };
-
- var firstModel = new FirstModel
- {
- P1 = "1234",
- P2 = secondModel,
- P3 = secondModel,
- P4 = thirdModel,
- };
-
- var validator = default(FirstValidator);
- var vr = validator.Validate("RecordTypes", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 4, "P1", "P2.P5", "P3.P5", "P4.P6");
- }
-
- [Fact]
- public void Valid()
- {
- var thirdModel = new ThirdModel
- {
- P6 = "12345",
- };
-
- var secondModel = new SecondModel
- {
- P5 = "12345",
- };
-
- var firstModel = new FirstModel
- {
- P1 = "12345",
- P2 = secondModel,
- P3 = secondModel,
- P4 = thirdModel,
- };
-
- var validator = default(FirstValidator);
- Assert.Equal(ValidateOptionsResult.Success, validator.Validate("RecordTypes", firstModel));
- }
-}
-
-#endif
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RepeatedTypesTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RepeatedTypesTests.cs
deleted file mode 100644
index b45fcbf9ced..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/RepeatedTypesTests.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using Microsoft.Extensions.Options;
-using RepeatedTypes;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class RepeatedTypesTests
-{
- [Fact]
- public void Invalid()
- {
- var thirdModel = new ThirdModel
- {
- P5 = "1234",
- };
-
- var secondModel = new SecondModel
- {
- P4 = thirdModel,
- };
-
- var firstModel = new FirstModel
- {
- P1 = secondModel,
- P2 = secondModel,
- P3 = thirdModel,
- };
-
- var validator = new FirstValidator();
- var vr = validator.Validate("RepeatedTypes", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 3, "P1.P4.P5", "P2.P4.P5", "P3.P5");
- }
-
- [Fact]
- public void Valid()
- {
- var thirdModel = new ThirdModel
- {
- P5 = "12345",
- };
-
- var secondModel = new SecondModel
- {
- P4 = thirdModel,
- };
-
- var firstModel = new FirstModel
- {
- P1 = secondModel,
- P2 = secondModel,
- P3 = thirdModel,
- };
-
- var validator = new FirstValidator();
- Assert.Equal(ValidateOptionsResult.Success, validator.Validate("RepeatedTypes", firstModel));
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/SelfValidationTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/SelfValidationTests.cs
deleted file mode 100644
index 0a511333f03..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/SelfValidationTests.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using Microsoft.Extensions.Options;
-using SelfValidation;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class SelfValidationTests
-{
- [Fact]
- public void Invalid()
- {
- var firstModel = new FirstModel
- {
- P1 = "1234",
- };
-
- var validator = default(FirstValidator);
- var vr = validator.Validate("SelfValidation", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 1, "P1");
- }
-
- [Fact]
- public void Valid()
- {
- var firstModel = new FirstModel
- {
- P1 = "12345",
- };
-
- var validator = default(FirstValidator);
- Assert.Equal(ValidateOptionsResult.Success, validator.Validate("SelfValidation", firstModel));
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.Designer.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.Designer.cs
deleted file mode 100644
index 4fa3e97cbd2..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.Designer.cs
+++ /dev/null
@@ -1,72 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace Microsoft.Gen.OptionsValidation.Test {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class TestResource {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal TestResource() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.Gen.OptionsValidation.Test.TestResource", typeof(TestResource).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized string similar to ErrorMessageResourceName.
- ///
- internal static string ErrorMessageResourceName {
- get {
- return ResourceManager.GetString("ErrorMessageResourceName", resourceCulture);
- }
- }
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.resx b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.resx
deleted file mode 100644
index 70f767945b3..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/TestResource.resx
+++ /dev/null
@@ -1,123 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- ErrorMessageResourceName
-
-
\ No newline at end of file
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/Utils.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/Utils.cs
deleted file mode 100644
index 7412374f18a..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/Utils.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-#if NETCOREAPP3_1_OR_GREATER
-using System.Linq;
-#endif
-using Microsoft.Extensions.Options;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-internal static class Utils
-{
- public static void VerifyValidateOptionsResult(ValidateOptionsResult vr, int expectedErrorCount, params string[] expectedErrorSubstrings)
- {
- Assert.NotNull(vr);
-
-#if NETCOREAPP3_1_OR_GREATER
- var failures = vr.Failures!.ToArray();
-#else
- var failures = vr.FailureMessage!.Split(';');
-#endif
-
- Assert.Equal(expectedErrorCount, failures.Length);
-
- for (int i = 0; i < expectedErrorSubstrings.Length; i++)
- {
- Assert.Contains(expectedErrorSubstrings[i], failures[i]);
- }
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/ValueTypesTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/ValueTypesTests.cs
deleted file mode 100644
index 543e8eb882b..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Common/ValueTypesTests.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using Microsoft.Extensions.Options;
-using ValueTypes;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class ValueTypesTests
-{
- [Fact]
- public void Invalid()
- {
- var secondModel = new SecondModel
- {
- P4 = "1234",
- };
-
- var firstModel = new FirstModel
- {
- P1 = "1234",
- P3 = secondModel,
- P2 = secondModel,
- P4 = default,
- };
-
- var validator = default(FirstValidator);
- var vr = validator.Validate("ValueTypes", firstModel);
-
- Utils.VerifyValidateOptionsResult(vr, 3, "P1", "P2.P4", "P3.P4");
- }
-
- [Fact]
- public void Valid()
- {
- var secondModel = new SecondModel
- {
- P4 = "12345",
- };
-
- var firstModel = new FirstModel
- {
- P1 = "12345",
- P3 = secondModel,
- P2 = secondModel,
- P4 = default,
- };
-
- var validator = default(FirstValidator);
- Assert.Equal(ValidateOptionsResult.Success, validator.Validate("ValueTypes", firstModel));
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Directory.Build.props b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Directory.Build.props
deleted file mode 100644
index ee32cd31896..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Directory.Build.props
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
- Microsoft.Gen.OptionsValidation.Test
- Tests for code generated by Gen.OptionsValidation.
-
-
-
- $(TestNetCoreTargetFrameworks)
- $(TestNetCoreTargetFrameworks)$(ConditionalNet462)
- true
- true
- true
- true
- $(NoWarn);CA1824
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.Generated.Tests.csproj b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.Generated.Tests.csproj
deleted file mode 100644
index 68a4e354e8c..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn3.8/Microsoft.Gen.OptionsValidation.Roslyn3.8.Generated.Tests.csproj
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
- 3.8
-
-
-
-
- True
- True
- TestResource.resx
-
-
-
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.Generated.Tests.csproj b/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.Generated.Tests.csproj
deleted file mode 100644
index 1dbe0b6f25c..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Generated/Roslyn4.0/Microsoft.Gen.OptionsValidation.Roslyn4.0.Generated.Tests.csproj
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
- 4.0
- $(DefineConstants);ROSLYN_4_0_OR_GREATER
-
-
-
-
- True
- True
- TestResource.resx
-
-
-
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/CustomAttr.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/CustomAttr.cs
deleted file mode 100644
index 4259af039bc..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/CustomAttr.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System;
-using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-namespace CustomAttr
-{
-#pragma warning disable SA1649
-#pragma warning disable SA1402
-#pragma warning disable CA1019
-#pragma warning disable IDE0052
-
- [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
- public sealed class CustomAttribute : ValidationAttribute
- {
- private readonly char _ch;
- private readonly bool _caseSensitive;
- private readonly string? _extra;
-
- public CustomAttribute(char ch, bool caseSensitive, string? extra)
- {
- _ch = ch;
- _caseSensitive = caseSensitive;
- _extra = extra;
- }
-
- protected override ValidationResult IsValid(object? value, ValidationContext? validationContext)
- {
- if (value == null)
- {
- return ValidationResult.Success!;
- }
-
- if (_caseSensitive)
- {
- if ((char)value != _ch)
- {
- return new ValidationResult($"{validationContext?.MemberName} didn't match");
- }
- }
- else
- {
- if (char.ToUpperInvariant((char)value) != char.ToUpperInvariant(_ch))
- {
- return new ValidationResult($"{validationContext?.MemberName} didn't match");
- }
- }
-
- return ValidationResult.Success!;
- }
- }
-
- public class FirstModel
- {
- [Custom('A', true, null)]
- public char P1 { get; set; }
-
- [Custom('A', false, "X")]
- public char P2 { get; set; }
- }
-
- [OptionsValidator]
- public partial class FirstValidator : IValidateOptions
- {
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Enumeration.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Enumeration.cs
deleted file mode 100644
index bf5d1f7c634..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Enumeration.cs
+++ /dev/null
@@ -1,94 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Diagnostics.CodeAnalysis;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-namespace Enumeration
-{
-#pragma warning disable SA1649
-#pragma warning disable SA1402
-
- public class FirstModel
- {
- [ValidateEnumeratedItems]
- public IList? P1;
-
- [ValidateEnumeratedItems(typeof(SecondValidator))]
- public IList? P2;
-
- [ValidateEnumeratedItems]
- public IList? P3;
-
- [ValidateEnumeratedItems]
- public IList? P4;
-
- [ValidateEnumeratedItems]
- public IList? P5;
-
- [ValidateEnumeratedItems]
- [SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1125:Use shorthand for nullable types", Justification = "Testing System>Nullable")]
- public IList>? P51;
-
- [ValidateEnumeratedItems]
- public SynteticEnumerable? P6;
-
- [ValidateEnumeratedItems]
- public SynteticEnumerable P7;
-
- [ValidateEnumeratedItems]
- [SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1125:Use shorthand for nullable types", Justification = "Testing System>Nullable")]
- public Nullable P8;
- }
-
- public class SecondModel
- {
- [Required]
- [MinLength(5)]
- public string P6 = string.Empty;
- }
-
- public struct ThirdModel
- {
- [Range(0, 10)]
- public int Value;
- }
-
- public struct SynteticEnumerable : IEnumerable
- {
- IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
-
- public IEnumerator GetEnumerator() => new InternalEnumerator();
-
- private class InternalEnumerator : IEnumerator
- {
- public SecondModel Current => throw new NotSupportedException();
-
- object IEnumerator.Current => Current;
-
- public void Dispose()
- {
- // Nothing to dispose...
- }
-
- public bool MoveNext() => false;
-
- public void Reset() => throw new NotSupportedException();
- }
- }
-
- [OptionsValidator]
- public partial struct FirstValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial struct SecondValidator : IValidateOptions
- {
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Fields.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Fields.cs
deleted file mode 100644
index ddf54f49f4e..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Fields.cs
+++ /dev/null
@@ -1,72 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-namespace Fields
-{
-#pragma warning disable SA1649
-#pragma warning disable SA1402
-#pragma warning disable S1186
-#pragma warning disable CA1822
-
- public class FirstModel
- {
- [Required]
- [MinLength(5)]
- public string P1 = string.Empty;
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(SecondValidator))]
- public SecondModel? P2;
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers]
- public ThirdModel P3;
- }
-
- public class SecondModel
- {
- [Required]
- [MinLength(5)]
- public string P4 = string.Empty;
- }
-
- public struct ThirdModel
- {
- [Required]
- [MinLength(5)]
- public string P5 = string.Empty;
-
- public int P6 = default;
-
- public ThirdModel(object _)
- {
- }
- }
-
- [OptionsValidator]
- public partial struct FirstValidator : IValidateOptions
- {
- public void Validate()
- {
- }
-
- public void Validate(int _)
- {
- }
-
- public void Validate(string? _)
- {
- }
-
- public void Validate(string? _0, object _1)
- {
- }
- }
-
- [OptionsValidator]
- public partial struct SecondValidator : IValidateOptions
- {
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FileScopedNamespace.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FileScopedNamespace.cs
deleted file mode 100644
index 1341181d24d..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FileScopedNamespace.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-namespace FileScopedNamespace;
-
-#pragma warning disable SA1649 // File name should match first type name
-
-public class FirstModel
-{
- [Required]
- [MinLength(5)]
- public string P1 = string.Empty;
-}
-
-[OptionsValidator]
-public partial struct FirstValidator : IValidateOptions
-{
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FunnyStrings.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FunnyStrings.cs
deleted file mode 100644
index 401109dd621..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/FunnyStrings.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-namespace FunnyStrings
-{
-#pragma warning disable SA1649
-#pragma warning disable SA1402
-
- public class FirstModel
- {
- [RegularExpression("\"\r\n\\\\")]
- public string P1 { get; set; } = string.Empty;
- }
-
- [OptionsValidator]
- public partial struct FirstValidator : IValidateOptions
- {
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Generics.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Generics.cs
deleted file mode 100644
index bde80402a18..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Generics.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-namespace Generics
-{
-#pragma warning disable SA1649
-#pragma warning disable SA1402
-
- public class FirstModel
- {
- [Required]
- [MinLength(5)]
- public string P1 { get; set; } = string.Empty;
-
- public T? P2 { get; set; }
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers]
- public SecondModel? P3 { get; set; }
- }
-
- public class SecondModel
- {
- [Required]
- [MinLength(5)]
- public string P4 { get; set; } = string.Empty;
- }
-
- [OptionsValidator]
- public partial class FirstValidator : IValidateOptions>
- {
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Models.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Models.cs
deleted file mode 100644
index 2234bd650da..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Models.cs
+++ /dev/null
@@ -1,252 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System;
-using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-using Microsoft.Gen.OptionsValidation.Test;
-
-#pragma warning disable SA1649
-#pragma warning disable SA1402
-
-namespace TestClasses.OptionsValidation
-{
- // ValidationAttribute without parameter
- public class RequiredAttributeModel
- {
- [Required]
- public string? Val { get; set; }
- }
-
- // ValidationAttribute with string parameter
- public class RegularExpressionAttributeModel
- {
- [RegularExpression("\\s")]
- public string Val { get; set; } = string.Empty;
- }
-
- // DataTypeAttribute
- public class EmailAttributeModel
- {
- [EmailAddress]
- public string Val { get; set; } = string.Empty;
- }
-
- // ValidationAttribute with System.Type parameter
- public class CustomValidationAttributeModel
- {
- [CustomValidation(typeof(CustomValidationTest), "TestMethod")]
- public string Val { get; set; } = string.Empty;
- }
-
-#pragma warning disable SA1204 // Static elements should appear before instance elements
- public static class CustomValidationTest
-#pragma warning restore SA1204 // Static elements should appear before instance elements
- {
- public static ValidationResult? TestMethod(string val, ValidationContext _)
- {
- if (val.Equals("Pass", StringComparison.Ordinal))
- {
- return ValidationResult.Success;
- }
-
- throw new ValidationException();
- }
- }
-
- // ValidationAttribute with DataType parameter
- public class DataTypeAttributeModel
- {
- [DataType(DataType.Text)]
- public string Val { get; set; } = string.Empty;
- }
-
- // ValidationAttribute with type, double, int parameters
- public class RangeAttributeModelInt
- {
- [Range(1, 3)]
- public int Val { get; set; }
- }
-
- public class RangeAttributeModelDouble
- {
- [Range(0.5, 0.9)]
- public double Val { get; set; }
- }
-
- public class RangeAttributeModelDate
- {
-#if NETCOREAPP3_1_OR_GREATER
- [Range(typeof(DateTime), "1/2/2004", "3/4/2004", ParseLimitsInInvariantCulture = true)]
-#else
- [Range(typeof(DateTime), "1/2/2004", "3/4/2004")]
-#endif
- public DateTime Val { get; set; }
- }
-
- public class MultipleAttributeModel
- {
- [Required]
- [DataType(DataType.Password)]
- public string Val1 { get; set; } = string.Empty;
-
- [Range(1, 3)]
- public int Val2 { get; set; }
-
- [Range(3, 5)]
- public int Val3 { get; set; }
-
- [Range(5, 9)]
- public int Val4 { get; set; }
- }
-
- public class CustomTypeCustomValidationAttributeModel
- {
- [CustomValidation(typeof(CustomTypeCustomValidationTest), "TestMethod")]
- public CustomType? Val { get; set; }
- }
-
- public class CustomType
- {
- public string Val1 { get; set; } = string.Empty;
- public string Val2 { get; set; } = string.Empty;
- }
-
-#pragma warning disable SA1204 // Static elements should appear before instance elements
- public static class CustomTypeCustomValidationTest
-#pragma warning restore SA1204 // Static elements should appear before instance elements
- {
- public static ValidationResult? TestMethod(CustomType val, ValidationContext _)
- {
- if (val.Val1.Equals("Pass", StringComparison.Ordinal) && val.Val2.Equals("Pass", StringComparison.Ordinal))
- {
- return ValidationResult.Success;
- }
-
- throw new ValidationException();
- }
- }
-
- public class AttributePropertyModel
- {
- [Range(1, 3, ErrorMessage = "ErrorMessage")]
- public int Val1 { get; set; }
-
- [Range(1, 3, ErrorMessageResourceType = typeof(TestResource), ErrorMessageResourceName = "ErrorMessageResourceName")]
- public int Val2 { get; set; }
- }
-
- public class TypeWithoutOptionsValidator
- {
- [Required]
- public string? Val1 { get; set; }
-
- [Range(typeof(DateTime), "1/2/2004", "3/4/2004")]
- public DateTime Val2 { get; set; }
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers]
- public RangeAttributeModelDouble? YetAnotherComplexVal { get; set; }
- }
-
- public class DerivedModel : RequiredAttributeModel
- {
- [Required]
- public string? DerivedVal { get; set; }
-
- [Required]
- internal virtual int? VirtualValWithAttr { get; set; }
-
- public virtual int? VirtualValWithoutAttr { get; set; }
-
- [Required]
- public new int? Val { get; set; }
- }
-
- public class LeafModel : DerivedModel
- {
- internal override int? VirtualValWithAttr { get; set; }
-
- [Required]
- public override int? VirtualValWithoutAttr { get; set; }
- }
-
- public class ComplexModel
- {
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers]
- public RequiredAttributeModel? ComplexVal { get; set; }
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers]
- public TypeWithoutOptionsValidator? ValWithoutOptionsValidator { get; set; }
- }
-
- [OptionsValidator]
- public partial class RequiredAttributeModelValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial class RegularExpressionAttributeModelValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial class EmailAttributeModelValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial class CustomValidationAttributeModelValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial class DataTypeAttributeModelValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial class RangeAttributeModelIntValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial class RangeAttributeModelDoubleValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial class RangeAttributeModelDateValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial class MultipleAttributeModelValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial class CustomTypeCustomValidationAttributeModelValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial class AttributePropertyModelValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial class DerivedModelValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial class LeafModelValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- internal sealed partial class ComplexModelValidator : IValidateOptions
- {
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/MultiModelValidator.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/MultiModelValidator.cs
deleted file mode 100644
index fd725d8403c..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/MultiModelValidator.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-namespace MultiModelValidator
-{
-#pragma warning disable SA1649
-#pragma warning disable SA1402
-
- public class FirstModel
- {
- [Required]
- [MinLength(5)]
- public string P1 = string.Empty;
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(MultiValidator))]
- public SecondModel? P2;
- }
-
- public class SecondModel
- {
- [Required]
- [MinLength(5)]
- public string P3 = string.Empty;
- }
-
- [OptionsValidator]
- public partial struct MultiValidator : IValidateOptions, IValidateOptions
- {
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Nested.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Nested.cs
deleted file mode 100644
index 531e0eed0d1..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/Nested.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-#if ROSLYN_4_0_OR_GREATER
-
-using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-namespace Nested
-{
-#pragma warning disable SA1649
-#pragma warning disable SA1402
-
- public static class Container1
- {
- public class FirstModel
- {
- [Required]
- [MinLength(5)]
- public string P1 { get; set; } = string.Empty;
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(Container2.Container3.SecondValidator))]
- public SecondModel? P2 { get; set; }
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers]
- public ThirdModel P3 { get; set; }
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(Container4.Container5.ThirdValidator))]
- public SecondModel? P4 { get; set; }
- }
-
- public class SecondModel
- {
- [Required]
- [MinLength(5)]
- public string P5 { get; set; } = string.Empty;
- }
-
- public struct ThirdModel
- {
- public ThirdModel(int _)
- {
- }
-
- [Required]
- [MinLength(5)]
- public string P6 { get; set; } = string.Empty;
- }
- }
-
- public static partial class Container2
- {
- public partial class Container3
- {
- public Container3(int _)
- {
- // nothing to do
- }
-
- [OptionsValidator]
- public partial struct FirstValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial struct SecondValidator : IValidateOptions
- {
- }
- }
- }
-
- public partial record class Container4
- {
- public partial record class Container5
- {
- public Container5(int _)
- {
- // nothing to do
- }
-
- [OptionsValidator]
- public partial struct ThirdValidator : IValidateOptions
- {
- }
- }
- }
-
- public partial struct Container6
- {
- [OptionsValidator]
- public partial struct FourthValidator : IValidateOptions
- {
- }
- }
-
- public partial record struct Container7
- {
- [OptionsValidator]
- public partial record struct FifthValidator : IValidateOptions
- {
- }
- }
-}
-
-#endif
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/NoNamespace.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/NoNamespace.cs
deleted file mode 100644
index db6461ddf18..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/NoNamespace.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-#pragma warning disable SA1649
-#pragma warning disable SA1402
-
-public class FirstModelNoNamespace
-{
- [Required]
- [MinLength(5)]
- public string P1 { get; set; } = string.Empty;
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(SecondValidatorNoNamespace))]
- public SecondModelNoNamespace? P2 { get; set; }
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers]
- public ThirdModelNoNamespace? P3 { get; set; }
-}
-
-public class SecondModelNoNamespace
-{
- [Required]
- [MinLength(5)]
- public string P4 { get; set; } = string.Empty;
-}
-
-public class ThirdModelNoNamespace
-{
- [Required]
- [MinLength(5)]
- public string P5 { get; set; } = string.Empty;
-}
-
-[OptionsValidator]
-public partial class FirstValidatorNoNamespace : IValidateOptions
-{
-}
-
-[OptionsValidator]
-public partial class SecondValidatorNoNamespace : IValidateOptions
-{
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RandomMembers.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RandomMembers.cs
deleted file mode 100644
index 08a3327a874..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RandomMembers.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System;
-using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-namespace RandomMembers
-{
-#pragma warning disable SA1649
-#pragma warning disable SA1402
-#pragma warning disable CA1822
-
- public class FirstModel
- {
- [Required]
- [MinLength(5)]
- public string? P1 { get; set; }
-
- public void Foo()
- {
- throw new NotSupportedException();
- }
-
- public class Nested
- {
- }
- }
-
- [OptionsValidator]
- public partial class FirstValidator : IValidateOptions
- {
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RecordTypes.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RecordTypes.cs
deleted file mode 100644
index b0b393f737d..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RecordTypes.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-#if ROSLYN_4_0_OR_GREATER
-
-using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-namespace RecordTypes
-{
-#pragma warning disable SA1649
-
- public record class FirstModel
- {
- [Required]
- [MinLength(5)]
- public string P1 { get; set; } = string.Empty;
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(SecondValidator))]
- public SecondModel? P2 { get; set; }
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers(typeof(ThirdValidator))]
- public SecondModel P3 { get; set; } = new SecondModel();
-
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers]
- public ThirdModel P4 { get; set; }
- }
-
- public record class SecondModel
- {
- [Required]
- [MinLength(5)]
- public string P5 { get; set; } = string.Empty;
- }
-
- public record struct ThirdModel
- {
- [Required]
- [MinLength(5)]
- public string P6 { get; set; } = string.Empty;
-
- public ThirdModel(int _)
- {
- }
-
- public ThirdModel(object _)
- {
- }
- }
-
- [OptionsValidator]
- public partial record struct FirstValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial record struct SecondValidator : IValidateOptions
- {
- }
-
- [OptionsValidator]
- public partial record class ThirdValidator : IValidateOptions
- {
- }
-}
-
-#endif
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RepeatedTypes.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RepeatedTypes.cs
deleted file mode 100644
index f5fa327bae5..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/RepeatedTypes.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-namespace RepeatedTypes
-{
-#pragma warning disable SA1649
-#pragma warning disable SA1402
-#pragma warning disable CA1019
-
- public class FirstModel
- {
- [Required]
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers]
- public SecondModel? P1 { get; set; }
-
- [Required]
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers]
- public SecondModel? P2 { get; set; }
-
- [Required]
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers]
- public ThirdModel? P3 { get; set; }
- }
-
- public class SecondModel
- {
- [Required]
- [Microsoft.Extensions.Options.Validation.ValidateObjectMembers]
- public ThirdModel? P4 { get; set; }
- }
-
- public class ThirdModel
- {
- [Required]
- [MinLength(5)]
- public string? P5;
- }
-
- [OptionsValidator]
- public partial class FirstValidator : IValidateOptions
- {
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/SelfValidation.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/SelfValidation.cs
deleted file mode 100644
index 673af4a0896..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/SelfValidation.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-namespace SelfValidation
-{
-#pragma warning disable SA1649
-
- public class FirstModel : IValidatableObject
- {
- [Required]
- public string P1 = string.Empty;
-
- public IEnumerable Validate(ValidationContext validationContext)
- {
- if (P1.Length < 5)
- {
- return new[] { new ValidationResult("P1 is not long enough") };
- }
-
- return Array.Empty();
- }
- }
-
- [OptionsValidator]
- public partial struct FirstValidator : IValidateOptions
- {
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/ValueTypes.cs b/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/ValueTypes.cs
deleted file mode 100644
index aa6a8c3f972..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/TestClasses/ValueTypes.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.Diagnostics.CodeAnalysis;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-
-namespace ValueTypes
-{
-#pragma warning disable SA1649
-
- public class FirstModel
- {
- [Required]
- [MinLength(5)]
- public string P1 { get; set; } = string.Empty;
-
- [ValidateObjectMembers]
- public SecondModel? P2 { get; set; }
-
- [ValidateObjectMembers]
- public SecondModel P3 { get; set; }
-
- [ValidateObjectMembers]
- [SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1125:Use shorthand for nullable types", Justification = "Testing System>Nullable")]
- public Nullable P4 { get; set; }
- }
-
- public struct SecondModel
- {
- [Required]
- [MinLength(5)]
- public string P4 { get; set; } = string.Empty;
-
- public SecondModel(object _)
- {
- }
- }
-
- [OptionsValidator]
- public partial struct FirstValidator : IValidateOptions
- {
- }
-}
diff --git a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/EmitterTests.cs b/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/EmitterTests.cs
deleted file mode 100644
index 56c0abdbfcb..00000000000
--- a/test/Generators/Microsoft.Gen.OptionsValidation/Unit/Common/EmitterTests.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.IO;
-using System.Reflection;
-using System.Threading.Tasks;
-using Microsoft.Extensions.Options;
-using Microsoft.Extensions.Options.Validation;
-using Microsoft.Gen.Shared;
-using Microsoft.Shared.Data.Validation;
-using Xunit;
-
-namespace Microsoft.Gen.OptionsValidation.Test;
-
-public class EmitterTests
-{
- [Fact]
- public async Task TestEmitter()
- {
- var sources = new List();
- foreach (var file in Directory.GetFiles("TestClasses"))
- {
-#if !ROSLYN_4_0_OR_GREATER
- if (file.EndsWith("Nested.cs") || file.EndsWith("RecordTypes.cs"))
- {
- continue;
- }
-#endif
-
-#if NETCOREAPP3_1_OR_GREATER
- sources.Add("#define NETCOREAPP3_1_OR_GREATER\n" + File.ReadAllText(file));
-#else
- sources.Add(File.ReadAllText(file));
-#endif
- }
-
- var (d, r) = await RoslynTestUtils.RunGenerator(
- new Generator(),
- new[]
- {
- Assembly.GetAssembly(typeof(RequiredAttribute))!,
- Assembly.GetAssembly(typeof(TimeSpanAttribute))!,
- Assembly.GetAssembly(typeof(OptionsValidatorAttribute))!,
- Assembly.GetAssembly(typeof(IValidateOptions