Repository navigation
feat: prepare support for .NET 11 - #1569
Merged
Merged
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
The prerelease dependency triggers NU5104 when packing stable releases, and warnings-as-errors causes the stable release build to fail.
1 open issue
What changed in this PR
Prepares System.IO.Abstractions for .NET 11, exposing the new hard-link and null-handle APIs while preserving explicit unsupported behavior in the in-memory mocks.
Changes:
- Adds the .NET 11 target, SDK selection, feature flags, and interface dependency.
- Adds abstract APIs, BCL wrappers, and mock implementations that throw
NotSupportedException. - Adds .NET 11 API baselines and parity snapshots.
| File | Description |
|---|---|
| tests/TestableIO.System.IO.Abstractions.Parity.Tests/ApiParityTests.cs | Selects .NET 11 parity snapshots. |
| tests/TestableIO.System.IO.Abstractions.Parity.Tests/__snapshots__/ApiParityTests.Path_.NET 11.0.snap | Records Path parity. |
| tests/TestableIO.System.IO.Abstractions.Parity.Tests/__snapshots__/ApiParityTests.FileVersionInfo_.NET 11.0.snap | Records FileVersionInfo parity. |
| tests/TestableIO.System.IO.Abstractions.Parity.Tests/__snapshots__/ApiParityTests.FileSystemWatcher_.NET 11.0.snap | Records FileSystemWatcher parity. |
| tests/TestableIO.System.IO.Abstractions.Parity.Tests/__snapshots__/ApiParityTests.FileInfo_.NET 11.0.snap | Records FileInfo parity. |
| tests/TestableIO.System.IO.Abstractions.Parity.Tests/__snapshots__/ApiParityTests.File_.NET 11.0.snap | Records File parity. |
| tests/TestableIO.System.IO.Abstractions.Parity.Tests/__snapshots__/ApiParityTests.DriveInfo_.NET 11.0.snap | Records DriveInfo parity. |
| tests/TestableIO.System.IO.Abstractions.Parity.Tests/__snapshots__/ApiParityTests.DirectoryInfo_.NET 11.0.snap | Records DirectoryInfo parity. |
| tests/TestableIO.System.IO.Abstractions.Parity.Tests/__snapshots__/ApiParityTests.Directory_.NET 11.0.snap | Records Directory parity. |
| tests/TestableIO.System.IO.Abstractions.Api.Tests/Expected/TestableIO.System.IO.Abstractions.Wrappers_net11.0.txt | Adds the wrapper API baseline. |
| tests/TestableIO.System.IO.Abstractions.Api.Tests/Expected/TestableIO.System.IO.Abstractions.TestingHelpers_net11.0.txt | Adds the mock API baseline. |
| tests/Directory.Build.props | Adds the .NET 11 test target. |
| src/TestableIO.System.IO.Abstractions.Wrappers/FileWrapper.cs | Delegates hard-link and null-handle operations to the BCL. |
| src/TestableIO.System.IO.Abstractions.Wrappers/FileInfoWrapper.cs | Delegates hard-link creation to FileInfo. |
| src/TestableIO.System.IO.Abstractions.Wrappers/FileInfoBase.cs | Declares the hard-link API. |
| src/TestableIO.System.IO.Abstractions.Wrappers/FileBase.cs | Declares hard-link and null-handle APIs. |
| src/TestableIO.System.IO.Abstractions.TestingHelpers/Properties/Resources.resx | Adds unsupported-operation messages. |
| src/TestableIO.System.IO.Abstractions.TestingHelpers/MockFileInfo.cs | Rejects mock FileInfo hard-link creation. |
| src/TestableIO.System.IO.Abstractions.TestingHelpers/MockFile.cs | Rejects mock hard-link and null-handle operations. |
| src/TestableIO.System.IO.Abstractions.TestingHelpers/CommonExceptions.cs | Centralizes the new exceptions. |
| src/Directory.Build.props | Adds the .NET 11 library target. |
| global.json | Selects the .NET 11 prerelease SDK. |
| Directory.Packages.props | Updates the interface dependency. |
| Directory.Build.props | Enables existing and new features for .NET 11. |
| .github/workflows/ci.yml | Installs the SDK selected by global.json. |
| .github/workflows/build.yml | Installs the selected SDK for testing and packaging. |
Review effort: Balanced
Testably.Abstractions.FileSystem.Interface 11.0.0-pre.1 only exposes the new hard link and null handle APIs on net11.0, so the target is needed to keep parity with the BCL. MockFileSystem cannot model hard links or provide a SafeFileHandle yet, so the mocks throw NotSupportedException.
vbreuss
force-pushed
the
feat/net11-support
branch
from
November 4, 2026 19:14
c7e59bb to
95c932d
Compare
|
vbreuss
enabled auto-merge (squash)
November 4, 2026 19:19
Contributor
|
This pull request is merged. |
|
This is addressed in release v23.0.0. |
This was referenced Nov 11, 2026
Merged
This was referenced Nov 11, 2026
Merged
Open
Bump TestableIO.System.IO.Abstractions.TestingHelpers from 22.3.0 to 23.0.0
belkiss/niftyplugins#183
Open
Merged
Open
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Testably.Abstractions.FileSystem.Interface 11.0.0-pre.1 only exposes the new hard link and null handle APIs on net11.0, so the target is needed to keep parity with the BCL. MockFileSystem cannot model hard links or provide a SafeFileHandle yet, so the mocks throw NotSupportedException.