diff --git a/src/Analyzers/MSTest.SourceGeneration/Helpers/SystemPolyfills.cs b/src/Analyzers/MSTest.SourceGeneration/Helpers/SystemPolyfills.cs
deleted file mode 100644
index 7a3645233e..0000000000
--- a/src/Analyzers/MSTest.SourceGeneration/Helpers/SystemPolyfills.cs
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under dual-license. See LICENSE.PLATFORMTOOLS.txt file in the project root for full license information.
-
-#if !NETCOREAPP
-#pragma warning disable SA1403 // File may only contain a single namespace
-#pragma warning disable SA1623 // Property summary documentation should match accessors
-#pragma warning disable SA1642 // Constructor summary documentation should begin with standard text
-#pragma warning disable SA1502 // Element should not be on a single line
-
-using System.ComponentModel;
-
-namespace System.Runtime.CompilerServices
-{
- [EditorBrowsable(EditorBrowsableState.Never)]
- internal static class IsExternalInit { }
-}
-
-// This was copied from https://github.com/dotnet/coreclr/blob/60f1e6265bd1039f023a82e0643b524d6aaf7845/src/System.Private.CoreLib/shared/System/Diagnostics/CodeAnalysis/NullableAttributes.cs
-// and updated to have the scope of the attributes be internal.
-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)]
- internal sealed class AllowNullAttribute : Attribute { }
-
- /// Specifies that null is disallowed as an input even if the corresponding type allows it.
- [AttributeUsage(AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.Property, Inherited = false)]
- internal sealed class DisallowNullAttribute : Attribute { }
-
- /// 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)]
- internal sealed class MaybeNullAttribute : Attribute { }
-
- /// Specifies that when a method returns , the parameter may be null even if the corresponding type disallows it.
- [AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
- 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; }
- }
-
- /// 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)]
- 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; }
- }
-
- /// 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; }
- }
-
- /// 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)]
- 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; }
- }
-
- /// 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)]
- 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; }
- }
-}
-
-#endif
-
-#if !NET7_0_OR_GREATER
-namespace System.Diagnostics.CodeAnalysis
-{
- ///
- /// Specifies that this constructor sets all required members for the current type,
- /// and callers do not need to set any required members themselves.
- ///
- [AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false, Inherited = false)]
- internal sealed class SetsRequiredMembersAttribute : Attribute
- {
- }
-}
-
-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)]
- internal sealed class CompilerFeatureRequiredAttribute : Attribute
- {
- ///
- /// Creates a new instance of the type.
- ///
- /// The name of the feature to indicate.
- public CompilerFeatureRequiredAttribute(string featureName) => FeatureName = featureName;
-
- ///
- /// The name of the compiler feature.
- ///
- public string FeatureName { get; }
-
- ///
- /// If true, the compiler can choose to allow access to the location where this attribute is applied if it does not understand .
- ///
- public bool IsOptional { get; set; }
-
- ///
- /// The used for the ref structs C# feature.
- ///
- public const string RefStructs = nameof(RefStructs);
-
- ///
- /// The used for the required members C# feature.
- ///
- public const string RequiredMembers = nameof(RequiredMembers);
- }
-
- ///
- /// Specifies that a type has required members or that a member is required.
- ///
- [AttributeUsage(
- AttributeTargets.Class |
- AttributeTargets.Struct |
- AttributeTargets.Field |
- AttributeTargets.Property,
- AllowMultiple = false,
- Inherited = false)]
- internal sealed class RequiredMemberAttribute : Attribute
- {
- }
-}
-#endif
diff --git a/src/Analyzers/MSTest.SourceGeneration/MSTest.SourceGeneration.csproj b/src/Analyzers/MSTest.SourceGeneration/MSTest.SourceGeneration.csproj
index af7c69027c..2c12d6cd89 100644
--- a/src/Analyzers/MSTest.SourceGeneration/MSTest.SourceGeneration.csproj
+++ b/src/Analyzers/MSTest.SourceGeneration/MSTest.SourceGeneration.csproj
@@ -7,7 +7,7 @@
true
false
- NU5128
+ NU5128;PolyfillTargetsForNuget
true
Microsoft.Testing.Framework.SourceGeneration
@@ -44,6 +44,8 @@ This package provides the C# source generators for MSTest test framework.]]>
+
+