diff --git a/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md
index 9a748a085a20f..cfd64682e8313 100644
--- a/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md
+++ b/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md
@@ -22,6 +22,7 @@ main PR
-# Package authoring signed off?
+# Package authoring no longer needed in .NET 9
-IMPORTANT: If this change touches code that ships in a NuGet package, please make certain that you have added any necessary [package authoring](../../docs/project/library-servicing.md) and gotten it explicitly reviewed.
+IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
+Keep in mind that we still need package authoring in .NET 8 and older versions.
\ No newline at end of file
diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml
index f8165363070ea..67ddf782dc0d1 100644
--- a/.github/workflows/backport.yml
+++ b/.github/workflows/backport.yml
@@ -48,4 +48,7 @@ jobs:
- The PR target branch is `release/X.0-staging`, not `release/X.0`.
- - If the change touches code that ships in a NuGet package, you have added the necessary [package authoring](https://github.com/dotnet/runtime/blob/main/docs/project/library-servicing.md) and gotten it explicitly reviewed.
+ ## Package authoring no longer needed in .NET 9
+
+ **IMPORTANT**: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
+ Keep in mind that we still need package authoring in .NET 8 and older versions.
\ No newline at end of file
diff --git a/Directory.Build.props b/Directory.Build.props
index a365e35d38fdb..f30877332027d 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -120,9 +120,7 @@
-
-
- 9.0.0-preview.7.24405.7
+ 9.0.0
net9.0
diff --git a/docs/project/library-servicing.md b/docs/project/library-servicing.md
index 869e3e7c44db8..8422d9becbfba 100644
--- a/docs/project/library-servicing.md
+++ b/docs/project/library-servicing.md
@@ -4,21 +4,15 @@ This document provides the steps that need to be followed after modifying a libr
Servicing branches represent shipped versions of .NET, and their name is in the format `release/X.0-staging`. Examples:
+- `release/9.0-staging`
- `release/8.0-staging`
-- `release/7.0-staging`
-- `release/6.0-staging`
-## Check if a package is generated
-
-If a library is packable (check for the `true` property) you'll need to set `true` in the source project. That is necessary as packages aren't generated by default in servicing releases.
-
-## Determine ServiceVersion
-
-When you make a change to a library & ship it during the servicing release, the `ServicingVersion` must be bumped. This property is found in the library's source project. It's also possible that the property is not in that file, in which case you'll need to add it to the library's source project and set it to 1. If the property is already present in your library's source project, just increment the servicing version by 1.
+IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
+Keep in mind that we still need package authoring in .NET 8 and older versions.
## Test your changes
-All that's left is to ensure that your changes have worked as expected. To do so, execute the following steps:
+Develop and test your change as normal. For packages, you may want to test them outside the repo infrastructure. To do so, execute the following steps:
1. From a clean copy of your branch, run `build.cmd/sh libs -allconfigurations`
@@ -34,9 +28,8 @@ All the servicing change must go through an approval process. You have two ways
- By manually creating your PR using [this template](https://raw.githubusercontent.com/dotnet/runtime/main/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md).
- Or by asking the bot to automatically create the servicing PR for you using a merged `main` PR as source. This method requires typing an AzDO backport command as a comment of your merged PR using the format `/backport to release/X.0-staging`. Examples:
+ - `/backport to release/9.0-staging`
- `/backport to release/8.0-staging`
- - `/backport to release/7.0-staging`
- - `/backport to release/6.0-staging`
For all cases, you must:
@@ -52,4 +45,4 @@ For all cases, you must:
The area owner can then merge the PR once the CI looks good (it's either green or the failures are investigated and determined to be unrelated to the PR).
-**Note**: Applying the `Servicing-approved` label ensures the `check-service-labels` CI job passes, which is a mandatory requirement for merging a PR in a servicing branch.
+**Note**: Applying the `Servicing-approved` label ensures the `check-service-labels` CI job passes, which is a mandatory requirement for merging a PR in a servicing branch.
\ No newline at end of file
diff --git a/eng/packaging.targets b/eng/packaging.targets
index 4b72fe0a67a61..131e5825a8fbb 100644
--- a/eng/packaging.targets
+++ b/eng/packaging.targets
@@ -27,8 +27,6 @@
PACKAGE.md
$(BeforePack);ValidatePackageReadmeExists
-
- false
true
-
- true
false
@@ -58,18 +48,6 @@
$(NoWarn);CP0003
-
-
- 0
-
-
- $(MajorVersion).$(MinorVersion).$(ServicingVersion)
- $(Version)-$(VersionSuffix)
-
-
-
-
-
-
diff --git a/src/libraries/Directory.Build.props b/src/libraries/Directory.Build.props
index 7ccc19377a2ef..77b995afb43be 100644
--- a/src/libraries/Directory.Build.props
+++ b/src/libraries/Directory.Build.props
@@ -35,8 +35,6 @@
false
false
-
- true
diff --git a/src/libraries/Directory.Build.targets b/src/libraries/Directory.Build.targets
index 3f6114dd79af6..6a4ca727db2dd 100644
--- a/src/libraries/Directory.Build.targets
+++ b/src/libraries/Directory.Build.targets
@@ -72,12 +72,11 @@
+ '$(IsPackable)' == 'true'">
<_IsWindowsDesktopApp Condition="$(WindowsDesktopCoreAppLibrary.Contains('$(AssemblyName);'))">true
<_IsAspNetCoreApp Condition="$(AspNetCoreAppLibrary.Contains('$(AssemblyName);'))">true
<_AssemblyInTargetingPack Condition="('$(IsNETCoreAppSrc)' == 'true' or '$(IsNetCoreAppRef)' == 'true' or '$(_IsAspNetCoreApp)' == 'true' or '$(_IsWindowsDesktopApp)' == 'true') and '$(TargetFrameworkIdentifier)' != '.NETFramework'">true
- $(MajorVersion).$(MinorVersion).0.$(ServicingVersion)
+ $(MajorVersion).$(MinorVersion).0.$(PatchVersion)
diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/tests/Microsoft.Extensions.Logging.Console.Tests/Microsoft.Extensions.Logging.Console.Tests.csproj b/src/libraries/Microsoft.Extensions.Logging.Console/tests/Microsoft.Extensions.Logging.Console.Tests/Microsoft.Extensions.Logging.Console.Tests.csproj
index 2beeab918e696..6c3acbcaeb4f4 100644
--- a/src/libraries/Microsoft.Extensions.Logging.Console/tests/Microsoft.Extensions.Logging.Console.Tests/Microsoft.Extensions.Logging.Console.Tests.csproj
+++ b/src/libraries/Microsoft.Extensions.Logging.Console/tests/Microsoft.Extensions.Logging.Console.Tests/Microsoft.Extensions.Logging.Console.Tests.csproj
@@ -10,6 +10,6 @@
-
+
diff --git a/src/libraries/System.Collections.Specialized/src/CompatibilitySuppressions.xml b/src/libraries/System.Collections.Specialized/src/CompatibilitySuppressions.xml
index a941952fee777..d6c64b01d2cd7 100644
--- a/src/libraries/System.Collections.Specialized/src/CompatibilitySuppressions.xml
+++ b/src/libraries/System.Collections.Specialized/src/CompatibilitySuppressions.xml
@@ -1,4 +1,5 @@
+
diff --git a/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.xml b/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.xml
index f74069e67951e..f575338fa3f76 100644
--- a/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.xml
+++ b/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.xml
@@ -1,258 +1,6 @@
-
- CP0002
- M:System.String.Trim(System.ReadOnlySpan{System.Char})
- net9.0/mscorlib.dll
- net10.0/mscorlib.dll
-
-
- CP0002
- M:System.String.TrimEnd(System.ReadOnlySpan{System.Char})
- net9.0/mscorlib.dll
- net10.0/mscorlib.dll
-
-
- CP0002
- M:System.String.TrimStart(System.ReadOnlySpan{System.Char})
- net9.0/mscorlib.dll
- net10.0/mscorlib.dll
-
-
- CP0002
- M:System.Collections.Generic.CollectionExtensions.GetAlternateLookup``2(System.Collections.Generic.HashSet{``0})
- net9.0/netstandard.dll
- net10.0/netstandard.dll
-
-
- CP0002
- M:System.Collections.Generic.CollectionExtensions.GetAlternateLookup``3(System.Collections.Generic.Dictionary{``0,``1})
- net9.0/netstandard.dll
- net10.0/netstandard.dll
-
-
- CP0002
- M:System.Collections.Generic.CollectionExtensions.TryGetAlternateLookup``2(System.Collections.Generic.HashSet{``0},System.Collections.Generic.HashSet{``0}.AlternateLookup{``1}@)
- net9.0/netstandard.dll
- net10.0/netstandard.dll
-
-
- CP0002
- M:System.Collections.Generic.CollectionExtensions.TryGetAlternateLookup``3(System.Collections.Generic.Dictionary{``0,``1},System.Collections.Generic.Dictionary{``0,``1}.AlternateLookup{``2}@)
- net9.0/netstandard.dll
- net10.0/netstandard.dll
-
-
- CP0002
- M:System.String.Trim(System.ReadOnlySpan{System.Char})
- net9.0/netstandard.dll
- net10.0/netstandard.dll
-
-
- CP0002
- M:System.String.TrimEnd(System.ReadOnlySpan{System.Char})
- net9.0/netstandard.dll
- net10.0/netstandard.dll
-
-
- CP0002
- M:System.String.TrimStart(System.ReadOnlySpan{System.Char})
- net9.0/netstandard.dll
- net10.0/netstandard.dll
-
-
- CP0002
- M:System.Collections.Generic.CollectionExtensions.GetAlternateLookup``2(System.Collections.Generic.HashSet{``0})
- net9.0/System.Collections.dll
- net10.0/System.Collections.dll
-
-
- CP0002
- M:System.Collections.Generic.CollectionExtensions.GetAlternateLookup``3(System.Collections.Generic.Dictionary{``0,``1})
- net9.0/System.Collections.dll
- net10.0/System.Collections.dll
-
-
- CP0002
- M:System.Collections.Generic.CollectionExtensions.TryGetAlternateLookup``2(System.Collections.Generic.HashSet{``0},System.Collections.Generic.HashSet{``0}.AlternateLookup{``1}@)
- net9.0/System.Collections.dll
- net10.0/System.Collections.dll
-
-
- CP0002
- M:System.Collections.Generic.CollectionExtensions.TryGetAlternateLookup``3(System.Collections.Generic.Dictionary{``0,``1},System.Collections.Generic.Dictionary{``0,``1}.AlternateLookup{``2}@)
- net9.0/System.Collections.dll
- net10.0/System.Collections.dll
-
-
- CP0002
- M:System.String.Trim(System.ReadOnlySpan{System.Char})
- net9.0/System.Runtime.dll
- net10.0/System.Runtime.dll
-
-
- CP0002
- M:System.String.TrimEnd(System.ReadOnlySpan{System.Char})
- net9.0/System.Runtime.dll
- net10.0/System.Runtime.dll
-
-
- CP0002
- M:System.String.TrimStart(System.ReadOnlySpan{System.Char})
- net9.0/System.Runtime.dll
- net10.0/System.Runtime.dll
-
-
- CP0002
- M:System.Runtime.Intrinsics.Arm.Sve.GatherPrefetch16Bit(System.Numerics.Vector{System.Int16},System.Numerics.Vector{System.UInt32},System.Runtime.Intrinsics.Arm.SvePrefetchType)
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0002
- M:System.Runtime.Intrinsics.Arm.Sve.GatherPrefetch16Bit(System.Numerics.Vector{System.UInt16},System.Numerics.Vector{System.UInt32},System.Runtime.Intrinsics.Arm.SvePrefetchType)
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0002
- M:System.Runtime.Intrinsics.Arm.Sve.GatherPrefetch32Bit(System.Numerics.Vector{System.Int32},System.Numerics.Vector{System.UInt32},System.Runtime.Intrinsics.Arm.SvePrefetchType)
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0002
- M:System.Runtime.Intrinsics.Arm.Sve.GatherPrefetch32Bit(System.Numerics.Vector{System.UInt32},System.Numerics.Vector{System.UInt32},System.Runtime.Intrinsics.Arm.SvePrefetchType)
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0002
- M:System.Runtime.Intrinsics.Arm.Sve.GatherPrefetch64Bit(System.Numerics.Vector{System.Int64},System.Numerics.Vector{System.UInt32},System.Runtime.Intrinsics.Arm.SvePrefetchType)
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0002
- M:System.Runtime.Intrinsics.Arm.Sve.GatherPrefetch64Bit(System.Numerics.Vector{System.UInt64},System.Numerics.Vector{System.UInt32},System.Runtime.Intrinsics.Arm.SvePrefetchType)
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0002
- M:System.Runtime.Intrinsics.Arm.Sve.GatherPrefetch8Bit(System.Numerics.Vector{System.Byte},System.Numerics.Vector{System.UInt32},System.Runtime.Intrinsics.Arm.SvePrefetchType)
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0002
- M:System.Runtime.Intrinsics.Arm.Sve.GatherPrefetch8Bit(System.Numerics.Vector{System.SByte},System.Numerics.Vector{System.UInt32},System.Runtime.Intrinsics.Arm.SvePrefetchType)
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0014
- M:System.Console.SetWindowSize(System.Int32,System.Int32):[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute]
- net9.0/mscorlib.dll
- net10.0/mscorlib.dll
-
-
- CP0014
- P:System.Console.WindowHeight:[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute]
- net9.0/mscorlib.dll
- net10.0/mscorlib.dll
-
-
- CP0014
- P:System.Console.WindowWidth:[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute]
- net9.0/mscorlib.dll
- net10.0/mscorlib.dll
-
-
- CP0014
- M:System.Console.SetWindowSize(System.Int32,System.Int32):[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute]
- net9.0/netstandard.dll
- net10.0/netstandard.dll
-
-
- CP0014
- P:System.Console.WindowHeight:[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute]
- net9.0/netstandard.dll
- net10.0/netstandard.dll
-
-
- CP0014
- P:System.Console.WindowWidth:[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute]
- net9.0/netstandard.dll
- net10.0/netstandard.dll
-
-
- CP0014
- M:System.Console.SetWindowSize(System.Int32,System.Int32):[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute]
- net9.0/System.Console.dll
- net10.0/System.Console.dll
-
-
- CP0014
- P:System.Console.WindowHeight:[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute]
- net9.0/System.Console.dll
- net10.0/System.Console.dll
-
-
- CP0014
- P:System.Console.WindowWidth:[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute]
- net9.0/System.Console.dll
- net10.0/System.Console.dll
-
-
- CP0014
- M:System.Runtime.Intrinsics.X86.X86Base.DivRem(System.UInt32,System.Int32,System.Int32):[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute]
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0014
- M:System.Runtime.Intrinsics.X86.X86Base.DivRem(System.UInt32,System.UInt32,System.UInt32):[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute]
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0014
- M:System.Runtime.Intrinsics.X86.X86Base.DivRem(System.UIntPtr,System.IntPtr,System.IntPtr):[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute]
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0014
- M:System.Runtime.Intrinsics.X86.X86Base.DivRem(System.UIntPtr,System.UIntPtr,System.UIntPtr):[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute]
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0014
- M:System.Runtime.Intrinsics.X86.X86Base.X64.DivRem(System.UInt64,System.Int64,System.Int64):[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute]
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0014
- M:System.Runtime.Intrinsics.X86.X86Base.X64.DivRem(System.UInt64,System.UInt64,System.UInt64):[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute]
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0014
- T:System.Runtime.Intrinsics.Arm.Sve:[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute]
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
-
- CP0014
- T:System.Runtime.Intrinsics.X86.AvxVnni:[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute]
- net9.0/System.Runtime.Intrinsics.dll
- net10.0/System.Runtime.Intrinsics.dll
-
CP0015
M:System.Delegate.#ctor(System.Type,System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]
@@ -313,12 +61,6 @@
net9.0/netstandard.dll
net10.0/netstandard.dll
-
- CP0015
- T:System.Security.Cryptography.AesGcm:[T:System.Runtime.Versioning.SupportedOSPlatformAttribute]
- net9.0/netstandard.dll
- net10.0/netstandard.dll
-
CP0015
M:System.Delegate.#ctor(System.Type,System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute]
@@ -349,28 +91,4 @@
net9.0/System.Runtime.dll
net10.0/System.Runtime.dll
-
- CP0015
- T:System.Security.Cryptography.AesGcm:[T:System.Runtime.Versioning.SupportedOSPlatformAttribute]
- net9.0/System.Security.Cryptography.Algorithms.dll
- net10.0/System.Security.Cryptography.Algorithms.dll
-
-
- CP0015
- T:System.Security.Cryptography.ChaCha20Poly1305:[T:System.Runtime.Versioning.SupportedOSPlatformAttribute]
- net9.0/System.Security.Cryptography.Algorithms.dll
- net10.0/System.Security.Cryptography.Algorithms.dll
-
-
- CP0015
- T:System.Security.Cryptography.AesGcm:[T:System.Runtime.Versioning.SupportedOSPlatformAttribute]
- net9.0/System.Security.Cryptography.dll
- net10.0/System.Security.Cryptography.dll
-
-
- CP0015
- T:System.Security.Cryptography.ChaCha20Poly1305:[T:System.Runtime.Versioning.SupportedOSPlatformAttribute]
- net9.0/System.Security.Cryptography.dll
- net10.0/System.Security.Cryptography.dll
-
\ No newline at end of file