diff --git a/ComponentModel b/ComponentModel
index ef79e50..e54a57d 160000
--- a/ComponentModel
+++ b/ComponentModel
@@ -1 +1 @@
-Subproject commit ef79e5064289d861c934eaf712fc331db8559438
+Subproject commit e54a57d2ddee82128c88c5eb171b4389e09bbce8
diff --git a/Enumerations b/Enumerations
index 4159f70..55767bd 160000
--- a/Enumerations
+++ b/Enumerations
@@ -1 +1 @@
-Subproject commit 4159f7081cc386611bdba39c1cade713175d2a05
+Subproject commit 55767bd1bda2c454e93f938d98d1415026ad7c2e
diff --git a/Extensions b/Extensions
index 7156781..b0acdc7 160000
--- a/Extensions
+++ b/Extensions
@@ -1 +1 @@
-Subproject commit 715678129e01dec25fa9c3ffba704a0bff507d84
+Subproject commit b0acdc7e618c3884c258b73437b87711312f15d7
diff --git a/Primitives b/Primitives
index 8b6d48e..eebe033 160000
--- a/Primitives
+++ b/Primitives
@@ -1 +1 @@
-Subproject commit 8b6d48e1cb065e843ec67facb6acd5c21e860f33
+Subproject commit eebe0334926f83d0703db4d712c2151f205f6eea
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/AllowNullAttribute.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/AllowNullAttribute.cs
new file mode 100644
index 0000000..b9fedb8
--- /dev/null
+++ b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/AllowNullAttribute.cs
@@ -0,0 +1,9 @@
+namespace System.Diagnostics.CodeAnalysis;
+
+/// Specifies that null is allowed as an input even if the corresponding type disallows it.
+[AttributeUsage(
+ AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.Property,
+ Inherited = false
+)]
+[Conditional(global::System.Private.CoreLib.Polyfills.Constants.NOTNETSTANDARD21ORGREATER)]
+internal sealed class AllowNullAttribute : Attribute { }
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/DisallowNullAttribute.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/DisallowNullAttribute.cs
new file mode 100644
index 0000000..053d914
--- /dev/null
+++ b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/DisallowNullAttribute.cs
@@ -0,0 +1,9 @@
+namespace System.Diagnostics.CodeAnalysis;
+
+/// Specifies that null is disallowed as an input even if the corresponding type allows it.
+[AttributeUsage(
+ AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.Property,
+ Inherited = false
+)]
+[Conditional(global::System.Private.CoreLib.Polyfills.Constants.NOTNETSTANDARD21ORGREATER)]
+internal sealed class DisallowNullAttribute : Attribute { }
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/DoesNotReturnAttribute.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/DoesNotReturnAttribute.cs
new file mode 100644
index 0000000..3a857a2
--- /dev/null
+++ b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/DoesNotReturnAttribute.cs
@@ -0,0 +1,6 @@
+namespace System.Diagnostics.CodeAnalysis;
+
+/// Applied to a method that will never return under any circumstance.
+[AttributeUsage(AttributeTargets.Method, Inherited = false)]
+[Conditional(global::System.Private.CoreLib.Polyfills.Constants.NOTNETSTANDARD21ORGREATER)]
+internal sealed class DoesNotReturnAttribute : Attribute { }
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/DoesNotReturnIfAttribute.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/DoesNotReturnIfAttribute.cs
index ca6cafb..b1e8a51 100644
--- a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/DoesNotReturnIfAttribute.cs
+++ b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/DoesNotReturnIfAttribute.cs
@@ -1,8 +1,7 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
namespace System.Diagnostics.CodeAnalysis;
+/// Specifies that the method will not return if the associated Boolean parameter is passed the specified value.
+[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
internal sealed class DoesNotReturnIfAttribute : Attribute
{
/// Initializes the attribute with the specified parameter value.
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/MaybeNullAttribute.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/MaybeNullAttribute.cs
new file mode 100644
index 0000000..2a45b4c
--- /dev/null
+++ b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/MaybeNullAttribute.cs
@@ -0,0 +1,12 @@
+namespace System.Diagnostics.CodeAnalysis;
+
+/// Specifies that an output may be null even if the corresponding type disallows it.
+[AttributeUsage(
+ AttributeTargets.Field
+ | AttributeTargets.Parameter
+ | AttributeTargets.Property
+ | AttributeTargets.ReturnValue,
+ Inherited = false
+)]
+[Conditional(global::System.Private.CoreLib.Polyfills.Constants.NOTNETSTANDARD21ORGREATER)]
+internal sealed class MaybeNullAttribute : Attribute { }
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/MaybeNullWhenAttribute.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/MaybeNullWhenAttribute.cs
new file mode 100644
index 0000000..995b5bb
--- /dev/null
+++ b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/MaybeNullWhenAttribute.cs
@@ -0,0 +1,16 @@
+namespace System.Diagnostics.CodeAnalysis;
+
+/// Specifies that when a method returns , the parameter may be null even if the corresponding type disallows it.
+[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
+[Conditional(global::System.Private.CoreLib.Polyfills.Constants.NOTNETSTANDARD21ORGREATER)]
+internal sealed class MaybeNullWhenAttribute : Attribute
+{
+ /// Initializes the attribute with the specified return value condition.
+ ///
+ /// The return value condition. If the method returns this value, the associated parameter may be null.
+ ///
+ public MaybeNullWhenAttribute(bool returnValue) => ReturnValue = returnValue;
+
+ /// Gets the return value condition.
+ public bool ReturnValue { get; }
+}
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/MemberNotNullAttribute.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/MemberNotNullAttribute.cs
new file mode 100644
index 0000000..778de5b
--- /dev/null
+++ b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/MemberNotNullAttribute.cs
@@ -0,0 +1,26 @@
+namespace System.Diagnostics.CodeAnalysis;
+
+/// Specifies that the method or property will ensure that the listed field and property members have not-null values.
+[AttributeUsage(
+ AttributeTargets.Method | AttributeTargets.Property,
+ Inherited = false,
+ AllowMultiple = true
+)]
+[Conditional(global::System.Private.CoreLib.Polyfills.Constants.NOTNETSTANDARD21ORGREATER)]
+internal sealed class MemberNotNullAttribute : Attribute
+{
+ /// Initializes the attribute with a field or property member.
+ ///
+ /// The field or property member that is promised to be not-null.
+ ///
+ public MemberNotNullAttribute(string member) => Members = new[] { member };
+
+ /// Initializes the attribute with the list of field and property members.
+ ///
+ /// The list of field and property members that are promised to be not-null.
+ ///
+ public MemberNotNullAttribute(params string[] members) => Members = members;
+
+ /// Gets field or property member names.
+ public string[] Members { get; }
+}
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/NotNullAttribute.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/NotNullAttribute.cs
index a93d888..6ae3e03 100644
--- a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/NotNullAttribute.cs
+++ b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/NotNullAttribute.cs
@@ -1,13 +1,15 @@
-// https://stackoverflow.com/questions/61573959/how-to-resolve-error-notnullwhen-attribute-is-inaccessible-due-to-its-protectio
-
namespace System.Diagnostics.CodeAnalysis;
-///
-/// Specifies that when a method returns , the
-/// parameter will not be null even if the corresponding type allows it.
-///
-[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
-internal sealed class NotNullAttribute : Attribute
+/// Specifies that an output will not be null even if the corresponding type allows it. Specifies that an input argument was not null when the call returns.
+[AttributeUsage(
+ AttributeTargets.Field
+ | AttributeTargets.Parameter
+ | AttributeTargets.Property
+ | AttributeTargets.ReturnValue,
+ Inherited = false
+)]
+[Conditional(global::System.Private.CoreLib.Polyfills.Constants.NOTNETSTANDARD21ORGREATER)]
+internal sealed class NotNullAttribute() : Attribute
{
///
/// Initializes the attribute with the specified return value condition.
@@ -15,7 +17,8 @@ internal sealed class NotNullAttribute : Attribute
/// The return value condition. If the method
/// returns this value, the associated parameter will not be null.
///
- public NotNullAttribute(bool returnValue) => ReturnValue = returnValue;
+ public NotNullAttribute(bool returnValue)
+ : this() => ReturnValue = returnValue;
///
/// Gets the return value condition.
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/NotNullIfNotNullAttribute.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/NotNullIfNotNullAttribute.cs
new file mode 100644
index 0000000..f75b6af
--- /dev/null
+++ b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/NotNullIfNotNullAttribute.cs
@@ -0,0 +1,20 @@
+namespace System.Diagnostics.CodeAnalysis;
+
+/// Specifies that the output will be non-null if the named parameter is non-null.
+[AttributeUsage(
+ AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.ReturnValue,
+ AllowMultiple = true,
+ Inherited = false
+)]
+[Conditional(global::System.Private.CoreLib.Polyfills.Constants.NOTNETSTANDARD21ORGREATER)]
+internal sealed class NotNullIfNotNullAttribute : Attribute
+{
+ /// Initializes the attribute with the associated parameter name.
+ ///
+ /// The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null.
+ ///
+ public NotNullIfNotNullAttribute(string parameterName) => ParameterName = parameterName;
+
+ /// Gets the associated parameter name.
+ public string ParameterName { get; }
+}
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/NotNullWhenAttribute.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/NotNullWhenAttribute.cs
new file mode 100644
index 0000000..f0f0f98
--- /dev/null
+++ b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/NotNullWhenAttribute.cs
@@ -0,0 +1,16 @@
+namespace System.Diagnostics.CodeAnalysis;
+
+/// Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it.
+[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
+[Conditional(global::System.Private.CoreLib.Polyfills.Constants.NOTNETSTANDARD21ORGREATER)]
+internal sealed class NotNullWhenAttribute : Attribute
+{
+ /// Initializes the attribute with the specified return value condition.
+ ///
+ /// The return value condition. If the method returns this value, the associated parameter will not be null.
+ ///
+ public NotNullWhenAttribute(bool returnValue) => ReturnValue = returnValue;
+
+ /// Gets the return value condition.
+ public bool ReturnValue { get; }
+}
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/NotNullWhenAttributes.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/NotNullWhenAttributes.cs
deleted file mode 100644
index 4428f91..0000000
--- a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/NotNullWhenAttributes.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-// https://stackoverflow.com/questions/61573959/how-to-resolve-error-notnullwhen-attribute-is-inaccessible-due-to-its-protectio
-
-namespace System.Diagnostics.CodeAnalysis;
-
-///
-/// Specifies that when a method returns , the
-/// parameter will not be null even if the corresponding type allows it.
-///
-[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
-internal sealed class NotNullWhenAttribute : Attribute
-{
- ///
- /// Initializes the attribute with the specified return value condition.
- ///
- /// The return value condition. If the method
- /// returns this value, the associated parameter will not be null.
- ///
- public NotNullWhenAttribute(bool returnValue) => ReturnValue = returnValue;
-
- ///
- /// Gets the return value condition.
- ///
- public bool ReturnValue { get; }
-}
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/SetsRequiredMembersAttribute.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/SetsRequiredMembersAttribute.cs
index 850160a..48195e1 100644
--- a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/SetsRequiredMembersAttribute.cs
+++ b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/SetsRequiredMembersAttribute.cs
@@ -1,6 +1,6 @@
namespace System.Diagnostics.CodeAnalysis;
-[System.AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false, Inherited = false)]
+[global::System.AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false, Inherited = false)]
internal sealed class SetsRequiredMembersAttribute(params string[] members) : Attribute
{
public string[] Members { get; } = members;
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/StringSyntaxAttribute.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/StringSyntaxAttribute.cs
index b6ced2c..e5f8a37 100644
--- a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/StringSyntaxAttribute.cs
+++ b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/StringSyntaxAttribute.cs
@@ -9,6 +9,7 @@ namespace System.Diagnostics.CodeAnalysis;
AllowMultiple = false,
Inherited = false
)]
+[Conditional(global::System.Private.CoreLib.Polyfills.Constants.NOTNET70ORGREATER)]
internal sealed class StringSyntaxAttribute : Attribute
{
/// Initializes the with the identifier of the syntax used.
diff --git a/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/System.Diagnostics.CodeAnalysis.cs b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/System.Diagnostics.CodeAnalysis.cs
new file mode 100644
index 0000000..17c4d1c
--- /dev/null
+++ b/System.Private.CoreLib.Polyfills/System.Diagnostics.CodeAnalysis/System.Diagnostics.CodeAnalysis.cs
@@ -0,0 +1,43 @@
+namespace System.Diagnostics.CodeAnalysis;
+
+/// Specifies that the method or property will ensure that the listed field and property members have not-null values when returning with the specified return value condition.
+[AttributeUsage(
+ AttributeTargets.Method | AttributeTargets.Property,
+ Inherited = false,
+ AllowMultiple = true
+)]
+[Conditional(global::System.Private.CoreLib.Polyfills.Constants.NOTNETSTANDARD21ORGREATER)]
+internal sealed class MemberNotNullWhenAttribute : Attribute
+{
+ /// Initializes the attribute with the specified return value condition and a field or property member.
+ ///
+ /// The return value condition. If the method returns this value, the associated parameter will not be null.
+ ///
+ ///
+ /// The field or property member that is promised to be not-null.
+ ///
+ public MemberNotNullWhenAttribute(bool returnValue, string member)
+ {
+ ReturnValue = returnValue;
+ Members = new[] { member };
+ }
+
+ /// Initializes the attribute with the specified return value condition and list of field and property members.
+ ///
+ /// The return value condition. If the method returns this value, the associated parameter will not be null.
+ ///
+ ///
+ /// The list of field and property members that are promised to be not-null.
+ ///
+ public MemberNotNullWhenAttribute(bool returnValue, params string[] members)
+ {
+ ReturnValue = returnValue;
+ Members = members;
+ }
+
+ /// Gets the return value condition.
+ public bool ReturnValue { get; }
+
+ /// Gets field or property member names.
+ public string[] Members { get; }
+}
diff --git a/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.Constants.cs b/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.Constants.cs
index 3c61908..90e73f4 100644
--- a/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.Constants.cs
+++ b/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.Constants.cs
@@ -2,16 +2,10 @@ namespace System.Private.CoreLib.Polyfills;
public class Constants
{
- public const string NET8_0_OR_GREATER = nameof(NET8_0_OR_GREATER);
- public const string NET7_0_OR_GREATER = nameof(NET7_0_OR_GREATER);
- public const string NET6_0_OR_GREATER = nameof(NET6_0_OR_GREATER);
- public const string NETSTANDARD = nameof(NETSTANDARD);
- public const string NETSTANDARD2_1_OR_GREATER = nameof(NETSTANDARD2_1_OR_GREATER);
- public const string NETSTANDARD2_0_OR_GREATER = nameof(NETSTANDARD2_0_OR_GREATER);
- public const string NOT_NET8_0_OR_GREATER = nameof(NOT_NET8_0_OR_GREATER);
- public const string NOT_NET7_0_OR_GREATER = nameof(NOT_NET7_0_OR_GREATER);
- public const string NOT_NET6_0_OR_GREATER = nameof(NOT_NET6_0_OR_GREATER);
- public const string NOT_NETSTANDARD = nameof(NOT_NETSTANDARD);
- public const string NOT_NETSTANDARD2_1_OR_GREATER = nameof(NOT_NETSTANDARD2_1_OR_GREATER);
- public const string NOT_NETSTANDARD2_0_OR_GREATER = nameof(NOT_NETSTANDARD2_0_OR_GREATER);
+ public const string NOTNET80ORGREATER = nameof(NOTNET80ORGREATER);
+ public const string NOTNET70ORGREATER = nameof(NOTNET70ORGREATER);
+ public const string NOTNET60ORGREATER = nameof(NOTNET60ORGREATER);
+ public const string NOTNETSTANDARD = nameof(NOTNETSTANDARD);
+ public const string NOTNETSTANDARD21ORGREATER = nameof(NOTNETSTANDARD21ORGREATER);
+ public const string NOTNETSTANDARD20ORGREATER = nameof(NOTNETSTANDARD20ORGREATER);
}
diff --git a/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.nuproj b/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.nuproj
index 6b86960..94b860f 100644
--- a/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.nuproj
+++ b/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.nuproj
@@ -8,7 +8,7 @@
-
+
diff --git a/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.props b/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.props
index 965ddfc..126ca69 100644
--- a/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.props
+++ b/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.props
@@ -1,15 +1,14 @@
-
-
-
-
+
+ $(DefineConstants);NOTNET80ORGREATER
+ $(DefineConstants);NOTNET70ORGREATER
+ $(DefineConstants);NOTNET60ORGREATER
+ $(DefineConstants);NOT_NETSTANDARD
+ $(DefineConstants);NOTNETSTANDARD20ORGREATER
+ $(DefineConstants);NOTNETSTANDARD21ORGREATER
+
+
+
diff --git a/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.sln b/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.sln
index 459f70d..9fabc05 100644
--- a/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.sln
+++ b/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.sln
@@ -1,6 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-#
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B283EBC2-E01F-412D-9339-FD56EF114549}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B283EBC2-E01F-412D-9339-FD56EF114549}"
ProjectSection(SolutionItems) = preProject
..\..\..\Directory.Build.props = ..\..\..\Directory.Build.props
..\..\..\Directory.Build.targets = ..\..\..\Directory.Build.targets
@@ -8,8 +7,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
..\..\..\Packages\Versions.Local.props = ..\..\..\Packages\Versions.Local.props
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Private.CoreLib.Polyfills", "System.Private.CoreLib.Polyfills.csproj", "{D15EFD5F-3FAA-4EE9-A1E1-65EE9B429DB1}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Local|Any CPU = Local|Any CPU
@@ -20,18 +17,6 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {D15EFD5F-3FAA-4EE9-A1E1-65EE9B429DB1}.Local|Any CPU.ActiveCfg = Local|Any CPU
- {D15EFD5F-3FAA-4EE9-A1E1-65EE9B429DB1}.Local|Any CPU.Build.0 = Local|Any CPU
- {D15EFD5F-3FAA-4EE9-A1E1-65EE9B429DB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D15EFD5F-3FAA-4EE9-A1E1-65EE9B429DB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D15EFD5F-3FAA-4EE9-A1E1-65EE9B429DB1}.Testing|Any CPU.ActiveCfg = Testing|Any CPU
- {D15EFD5F-3FAA-4EE9-A1E1-65EE9B429DB1}.Testing|Any CPU.Build.0 = Testing|Any CPU
- {D15EFD5F-3FAA-4EE9-A1E1-65EE9B429DB1}.Staging|Any CPU.ActiveCfg = Staging|Any CPU
- {D15EFD5F-3FAA-4EE9-A1E1-65EE9B429DB1}.Staging|Any CPU.Build.0 = Staging|Any CPU
- {D15EFD5F-3FAA-4EE9-A1E1-65EE9B429DB1}.Production|Any CPU.ActiveCfg = Local|Any CPU
- {D15EFD5F-3FAA-4EE9-A1E1-65EE9B429DB1}.Production|Any CPU.Build.0 = Local|Any CPU
- {D15EFD5F-3FAA-4EE9-A1E1-65EE9B429DB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D15EFD5F-3FAA-4EE9-A1E1-65EE9B429DB1}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.targets b/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.targets
index 78b6ad4..953d007 100644
--- a/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.targets
+++ b/System.Private.CoreLib.Polyfills/System.Private.CoreLib.Polyfills.targets
@@ -7,10 +7,30 @@
$(DefineConstants);NOT_NETSTANDARD2_0_OR_GREATER
$(DefineConstants);NOT_NETSTANDARD2_1_OR_GREATER
-->
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/System.Private.CoreLib.Polyfills/System.Runtime.CompilerServices/CompilerFeatureRequiredAttribute.cs b/System.Private.CoreLib.Polyfills/System.Runtime.CompilerServices/CompilerFeatureRequiredAttribute.cs
index 030bd6b..bf1a945 100644
--- a/System.Private.CoreLib.Polyfills/System.Runtime.CompilerServices/CompilerFeatureRequiredAttribute.cs
+++ b/System.Private.CoreLib.Polyfills/System.Runtime.CompilerServices/CompilerFeatureRequiredAttribute.cs
@@ -4,6 +4,7 @@ namespace System.Runtime.CompilerServices;
/// Indicates that compiler support for a particular feature is required for the location where this attribute is applied.
///
[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = false)]
+[Conditional(global::System.Private.CoreLib.Polyfills.Constants.NOTNET70ORGREATER)]
internal sealed class CompilerFeatureRequiredAttribute(string? featureName, bool isOptional)
: Attribute
{