diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 67d762d..37da93f 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -28,10 +28,14 @@ jobs:
10.x
- name: Checkout
uses: actions/checkout@v4
- - name: Build
+ - name: Build (Debug)
run: dotnet build -c Debug
- - name: Test
- run: dotnet test --no-build --filter "TestCategory!~Cloud"
+ - name: Build (Release)
+ run: dotnet build -c Release
+ - name: Test (Debug)
+ run: dotnet test -c Debug --no-build --filter "TestCategory!~Cloud"
+ - name: Test (Release)
+ run: dotnet test -c Release --no-build --filter "TestCategory!~Cloud"
azure:
name: "Test: AzureFileSystem"
@@ -88,4 +92,4 @@ jobs:
- name: Build
run: dotnet build -c Debug
- name: Test
- run: dotnet test --no-build --filter TestCategory=Cloud:Amazon
+ run: dotnet test --no-build --filter TestCategory=Cloud:Amazon -maxcpucount:1
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 12c4c02..aec1e52 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -8,7 +8,7 @@
-
+
diff --git a/src/Ramstack.FileSystem.Abstractions/Ramstack.FileSystem.Abstractions.csproj b/src/Ramstack.FileSystem.Abstractions/Ramstack.FileSystem.Abstractions.csproj
index 36aa9cd..51eb9b4 100644
--- a/src/Ramstack.FileSystem.Abstractions/Ramstack.FileSystem.Abstractions.csproj
+++ b/src/Ramstack.FileSystem.Abstractions/Ramstack.FileSystem.Abstractions.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
A .NET library that provides a virtual file system abstraction.
enable
enable
diff --git a/src/Ramstack.FileSystem.Abstractions/Utilities/StreamReaderExtensions.cs b/src/Ramstack.FileSystem.Abstractions/Utilities/StreamReaderExtensions.cs
new file mode 100644
index 0000000..2b2a2c5
--- /dev/null
+++ b/src/Ramstack.FileSystem.Abstractions/Utilities/StreamReaderExtensions.cs
@@ -0,0 +1,62 @@
+#if NET6_0
+using System.Buffers;
+using System.Text;
+
+// ReSharper disable once CheckNamespace
+namespace System.IO;
+///
+/// Provides extension methods for the to offer API compatibility with newer .NET versions.
+///
+public static class StreamReaderExtensions
+{
+ ///
+ /// Reads a line of characters asynchronously from the current stream and returns the data as a string.
+ ///
+ /// The to read from.
+ /// An optional cancellation token to cancel the operation.
+ ///
+ /// A that represents the asynchronous read operation.
+ /// The value of the task contains the next line from the stream, or is
+ /// if the end of the stream is reached.
+ ///
+ public static ValueTask ReadLineAsync(this StreamReader reader, CancellationToken cancellationToken = default)
+ {
+ if (cancellationToken.IsCancellationRequested)
+ return ValueTask.FromCanceled(cancellationToken);
+
+ return new ValueTask(reader.ReadLineAsync());
+ }
+
+ ///
+ /// Reads all characters from the current position to the end of the stream asynchronously and returns them as one string.
+ ///
+ /// The to read from.
+ /// An optional cancellation token to cancel the operation.
+ ///
+ /// A that represents the asynchronous read operation.
+ /// The value of the task contains a string with the characters from the current position to the end of the stream.
+ ///
+ public static async Task ReadToEndAsync(this StreamReader reader, CancellationToken cancellationToken = default)
+ {
+ const int BufferSize = 4096;
+
+ var chars = ArrayPool.Shared.Rent(BufferSize);
+ var sb = new StringBuilder();
+
+ while (true)
+ {
+ var count = await reader
+ .ReadAsync(new Memory(chars), cancellationToken)
+ .ConfigureAwait(false);
+
+ if (count == 0)
+ break;
+
+ sb.Append(chars.AsSpan(0, count));
+ }
+
+ ArrayPool.Shared.Return(chars);
+ return sb.ToString();
+ }
+}
+#endif
diff --git a/src/Ramstack.FileSystem.Abstractions/VirtualFileExtensions.cs b/src/Ramstack.FileSystem.Abstractions/VirtualFileExtensions.cs
index f4018ed..a4ae2f4 100644
--- a/src/Ramstack.FileSystem.Abstractions/VirtualFileExtensions.cs
+++ b/src/Ramstack.FileSystem.Abstractions/VirtualFileExtensions.cs
@@ -74,44 +74,11 @@ public static ValueTask ReadAllTextAsync(this VirtualFile file, Cancella
///
public static async ValueTask ReadAllTextAsync(this VirtualFile file, Encoding? encoding, CancellationToken cancellationToken = default)
{
- //
- // Use a manual read loop since .NET 6 lacks a StreamReader.ReadToEndAsync overload that accepts a CancellationToken.
- // This ensures the operation remains responsive to cancellation requests.
- //
-
- const int BufferSize = 4096;
-
// ReSharper disable once UseAwaitUsing
using var stream = await file.OpenReadAsync(cancellationToken).ConfigureAwait(false);
- var reader = new StreamReader(stream, encoding ??= Encoding.UTF8);
- var buffer = (char[]?)null;
-
- try
- {
- cancellationToken.ThrowIfCancellationRequested();
-
- buffer = ArrayPool.Shared.Rent(encoding.GetMaxCharCount(BufferSize));
- var sb = new StringBuilder();
-
- while (true)
- {
- var count = await reader
- .ReadAsync(new Memory(buffer), cancellationToken)
- .ConfigureAwait(false);
-
- if (count == 0)
- return sb.ToString();
-
- sb.Append(buffer.AsSpan(0, count));
- }
- }
- finally
- {
- reader.Dispose();
+ using var reader = new StreamReader(stream, encoding!);
- if (buffer is not null)
- ArrayPool.Shared.Return(buffer);
- }
+ return await reader.ReadToEndAsync(cancellationToken).ConfigureAwait(false);
}
///
@@ -142,11 +109,8 @@ public static async ValueTask ReadAllLinesAsync(this VirtualFile file,
using var reader = new StreamReader(stream, encoding!);
var list = new List();
- while (await reader.ReadLineAsync().ConfigureAwait(false) is { } line)
- {
- cancellationToken.ThrowIfCancellationRequested();
+ while (await reader.ReadLineAsync(cancellationToken).ConfigureAwait(false) is { } line)
list.Add(line);
- }
return list.ToArray();
}
@@ -165,7 +129,7 @@ public static async ValueTask ReadAllBytesAsync(this VirtualFile file, C
// ReSharper disable once UseAwaitUsing
using var stream = await file.OpenReadAsync(cancellationToken).ConfigureAwait(false);
- var length = GetStreamLength(stream);
+ var length = stream.CanSeek ? stream.Length : 0;
if (length > Array.MaxLength)
throw new IOException("The file is too large.");
@@ -179,6 +143,7 @@ static async ValueTask ReadAllBytesImplAsync(Stream stream, Cancellation
{
var bytes = new byte[stream.Length];
var index = 0;
+
do
{
var count = await stream.ReadAsync(bytes.AsMemory(index), cancellationToken).ConfigureAwait(false);
@@ -186,8 +151,7 @@ static async ValueTask ReadAllBytesImplAsync(Stream stream, Cancellation
Error_EndOfStream();
index += count;
- }
- while (index < bytes.Length);
+ } while (index < bytes.Length);
return bytes;
}
@@ -225,29 +189,11 @@ static byte[] ResizeBuffer(byte[] oldArray)
var newArray = ArrayPool.Shared.Rent((int)length);
oldArray.AsSpan().TryCopyTo(newArray);
- var rented = oldArray;
- oldArray = newArray;
-
- ArrayPool.Shared.Return(rented);
- return oldArray;
+ ArrayPool.Shared.Return(oldArray);
+ return newArray;
}
}
- static long GetStreamLength(Stream stream)
- {
- try
- {
- if (stream.CanSeek)
- return stream.Length;
- }
- catch
- {
- // skip
- }
-
- return 0;
- }
-
static void Error_EndOfStream() =>
throw new EndOfStreamException();
}
@@ -334,7 +280,7 @@ public static async ValueTask WriteAllLinesAsync(this VirtualFile file, IEnumera
await using var writer = new StreamWriter(stream, encoding, bufferSize: -1, leaveOpen: false);
foreach (var line in contents)
- await writer.WriteLineAsync(line).ConfigureAwait(false);
+ await writer.WriteLineAsync(line.AsMemory(), cancellationToken).ConfigureAwait(false);
}
///
diff --git a/src/Ramstack.FileSystem.Adapters/Ramstack.FileSystem.Adapters.csproj b/src/Ramstack.FileSystem.Adapters/Ramstack.FileSystem.Adapters.csproj
index c067770..89d8e6d 100644
--- a/src/Ramstack.FileSystem.Adapters/Ramstack.FileSystem.Adapters.csproj
+++ b/src/Ramstack.FileSystem.Adapters/Ramstack.FileSystem.Adapters.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
Provides adapters for integrating Ramstack.FileSystem with Microsoft.Extensions.FileProviders.
enable
enable
@@ -43,8 +43,15 @@
-
+
+
+
+
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/Ramstack.FileSystem.Amazon/Ramstack.FileSystem.Amazon.csproj b/src/Ramstack.FileSystem.Amazon/Ramstack.FileSystem.Amazon.csproj
index abef07c..ac0f556 100644
--- a/src/Ramstack.FileSystem.Amazon/Ramstack.FileSystem.Amazon.csproj
+++ b/src/Ramstack.FileSystem.Amazon/Ramstack.FileSystem.Amazon.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
Provides an implementation of Ramstack.FileSystem using Amazon S3 storage.
enable
enable
diff --git a/src/Ramstack.FileSystem.Composite/Ramstack.FileSystem.Composite.csproj b/src/Ramstack.FileSystem.Composite/Ramstack.FileSystem.Composite.csproj
index 83beecf..fb06cd0 100644
--- a/src/Ramstack.FileSystem.Composite/Ramstack.FileSystem.Composite.csproj
+++ b/src/Ramstack.FileSystem.Composite/Ramstack.FileSystem.Composite.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
Provides an implementation of Ramstack.FileSystem that combines multiple file systems into a single composite file system.
enable
enable
diff --git a/src/Ramstack.FileSystem.Globbing/Internal/PathHelper.cs b/src/Ramstack.FileSystem.Globbing/Internal/PathHelper.cs
index 8b22129..6498843 100644
--- a/src/Ramstack.FileSystem.Globbing/Internal/PathHelper.cs
+++ b/src/Ramstack.FileSystem.Globbing/Internal/PathHelper.cs
@@ -249,7 +249,7 @@ public PathSegmentIterator() =>
if (Avx2.IsSupported && (int)_position + Vector256.Count <= length)
{
var chunk = LoadVector256(ref source, _position);
- var slash = Vector256.Create('/');
+ var slash = Vector256.Create((ushort)'/');
var comparison = Avx2.CompareEqual(chunk, slash);
//
@@ -269,7 +269,7 @@ public PathSegmentIterator() =>
else if (Sse2.IsSupported && !Avx2.IsSupported && (int)_position + Vector128.Count <= length)
{
var chunk = LoadVector128(ref source, _position);
- var slash = Vector128.Create('/');
+ var slash = Vector128.Create((ushort)'/');
var comparison = Sse2.CompareEqual(chunk, slash);
//
@@ -289,7 +289,7 @@ public PathSegmentIterator() =>
else if (AdvSimd.Arm64.IsSupported && (int)_position + Vector128.Count <= length)
{
var chunk = LoadVector128(ref source, _position);
- var slash = Vector128.Create('/');
+ var slash = Vector128.Create((ushort)'/');
var comparison = AdvSimd.CompareEqual(chunk, slash);
//
diff --git a/src/Ramstack.FileSystem.Globbing/Ramstack.FileSystem.Globbing.csproj b/src/Ramstack.FileSystem.Globbing/Ramstack.FileSystem.Globbing.csproj
index dc500c1..e771eb5 100644
--- a/src/Ramstack.FileSystem.Globbing/Ramstack.FileSystem.Globbing.csproj
+++ b/src/Ramstack.FileSystem.Globbing/Ramstack.FileSystem.Globbing.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
Provides an implementation of Ramstack.FileSystem that applies glob-based filtering rules to the underlying file system.
enable
enable
diff --git a/src/Ramstack.FileSystem.Google/Ramstack.FileSystem.Google.csproj b/src/Ramstack.FileSystem.Google/Ramstack.FileSystem.Google.csproj
index 70788cb..05f8d69 100644
--- a/src/Ramstack.FileSystem.Google/Ramstack.FileSystem.Google.csproj
+++ b/src/Ramstack.FileSystem.Google/Ramstack.FileSystem.Google.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
Provides an implementation of Ramstack.FileSystem using Google Cloud Storage.
enable
enable
diff --git a/src/Ramstack.FileSystem.Physical/Ramstack.FileSystem.Physical.csproj b/src/Ramstack.FileSystem.Physical/Ramstack.FileSystem.Physical.csproj
index 2b5a1f5..bb3ef2d 100644
--- a/src/Ramstack.FileSystem.Physical/Ramstack.FileSystem.Physical.csproj
+++ b/src/Ramstack.FileSystem.Physical/Ramstack.FileSystem.Physical.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
Provides an implementation of Ramstack.FileSystem based on local file system.
enable
enable
diff --git a/src/Ramstack.FileSystem.Prefixed/Ramstack.FileSystem.Prefixed.csproj b/src/Ramstack.FileSystem.Prefixed/Ramstack.FileSystem.Prefixed.csproj
index af60524..9a911d8 100644
--- a/src/Ramstack.FileSystem.Prefixed/Ramstack.FileSystem.Prefixed.csproj
+++ b/src/Ramstack.FileSystem.Prefixed/Ramstack.FileSystem.Prefixed.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
Provides an implementation of Ramstack.FileSystem that adds a specified prefix to the file paths within the underlying file system.
enable
enable
diff --git a/src/Ramstack.FileSystem.Readonly/Ramstack.FileSystem.Readonly.csproj b/src/Ramstack.FileSystem.Readonly/Ramstack.FileSystem.Readonly.csproj
index 58e28af..a015533 100644
--- a/src/Ramstack.FileSystem.Readonly/Ramstack.FileSystem.Readonly.csproj
+++ b/src/Ramstack.FileSystem.Readonly/Ramstack.FileSystem.Readonly.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
Provides an implementation of Ramstack.FileSystem that wraps the underlying file system, preventing any destructive operations.
enable
enable
diff --git a/src/Ramstack.FileSystem.Sub/Ramstack.FileSystem.Sub.csproj b/src/Ramstack.FileSystem.Sub/Ramstack.FileSystem.Sub.csproj
index 481f020..62806de 100644
--- a/src/Ramstack.FileSystem.Sub/Ramstack.FileSystem.Sub.csproj
+++ b/src/Ramstack.FileSystem.Sub/Ramstack.FileSystem.Sub.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
Provides an implementation of Ramstack.FileSystem that wraps an underlying file system for managing files under a specific subpath.
enable
enable
diff --git a/tests/Ramstack.FileSystem.Abstractions.Tests/Ramstack.FileSystem.Abstractions.Tests.csproj b/tests/Ramstack.FileSystem.Abstractions.Tests/Ramstack.FileSystem.Abstractions.Tests.csproj
index 1041185..c2df622 100644
--- a/tests/Ramstack.FileSystem.Abstractions.Tests/Ramstack.FileSystem.Abstractions.Tests.csproj
+++ b/tests/Ramstack.FileSystem.Abstractions.Tests/Ramstack.FileSystem.Abstractions.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
enable
enable
preview
diff --git a/tests/Ramstack.FileSystem.Amazon.Tests/Ramstack.FileSystem.Amazon.Tests.csproj b/tests/Ramstack.FileSystem.Amazon.Tests/Ramstack.FileSystem.Amazon.Tests.csproj
index 9f93ef7..1d3871d 100644
--- a/tests/Ramstack.FileSystem.Amazon.Tests/Ramstack.FileSystem.Amazon.Tests.csproj
+++ b/tests/Ramstack.FileSystem.Amazon.Tests/Ramstack.FileSystem.Amazon.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
enable
enable
preview
diff --git a/tests/Ramstack.FileSystem.Amazon.Tests/ReadonlyAmazonFileSystemTests.cs b/tests/Ramstack.FileSystem.Amazon.Tests/ReadonlyAmazonFileSystemTests.cs
index e222af4..0267c0b 100644
--- a/tests/Ramstack.FileSystem.Amazon.Tests/ReadonlyAmazonFileSystemTests.cs
+++ b/tests/Ramstack.FileSystem.Amazon.Tests/ReadonlyAmazonFileSystemTests.cs
@@ -12,6 +12,7 @@ namespace Ramstack.FileSystem.Amazon;
public class ReadonlyAmazonFileSystemTests : VirtualFileSystemSpecificationTests
{
private readonly TempFileStorage _storage = new TempFileStorage();
+ private readonly string _storageName = Guid.NewGuid().ToString("N");
[OneTimeSetUp]
public async Task Setup()
@@ -51,7 +52,7 @@ private AmazonS3FileSystem CreateFileSystem(bool isReadOnly)
ForcePathStyle = true,
};
- return new AmazonS3FileSystem(credentials, config, bucketName: "storage")
+ return new AmazonS3FileSystem(credentials, config, bucketName: _storageName)
{
IsReadOnly = isReadOnly
};
diff --git a/tests/Ramstack.FileSystem.Amazon.Tests/WritableAmazonFileSystemTests.cs b/tests/Ramstack.FileSystem.Amazon.Tests/WritableAmazonFileSystemTests.cs
index 2d89780..64d7eff 100644
--- a/tests/Ramstack.FileSystem.Amazon.Tests/WritableAmazonFileSystemTests.cs
+++ b/tests/Ramstack.FileSystem.Amazon.Tests/WritableAmazonFileSystemTests.cs
@@ -16,6 +16,7 @@ public class WritableAmazonFileSystemTests : VirtualFileSystemSpecificationTests
{
private readonly HashSet _buckets = [];
private readonly TempFileStorage _storage = new TempFileStorage();
+ private readonly string _storageName = Guid.NewGuid().ToString("N");
[OneTimeSetUp]
public async Task Setup()
@@ -166,7 +167,7 @@ await reader.ReadToEndAsync(),
[Test]
public async Task File_CopyTo_File_DifferentStorages()
{
- using var fs1 = CreateFileSystem("temp-storage");
+ using var fs1 = CreateFileSystem(Guid.NewGuid().ToString("N"));
using var fs2 = GetFileSystem();
await fs1.CreateBucketAsync();
@@ -307,7 +308,7 @@ await fs.GetFilesAsync("/temp").AnyAsync(),
}
protected override AmazonS3FileSystem GetFileSystem() =>
- CreateFileSystem("storage");
+ CreateFileSystem(_storageName);
protected override DirectoryInfo GetDirectoryInfo() =>
new DirectoryInfo(_storage.Root);
diff --git a/tests/Ramstack.FileSystem.Composite.Tests/Ramstack.FileSystem.Composite.Tests.csproj b/tests/Ramstack.FileSystem.Composite.Tests/Ramstack.FileSystem.Composite.Tests.csproj
index c798d4f..609d57e 100644
--- a/tests/Ramstack.FileSystem.Composite.Tests/Ramstack.FileSystem.Composite.Tests.csproj
+++ b/tests/Ramstack.FileSystem.Composite.Tests/Ramstack.FileSystem.Composite.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
enable
enable
preview
diff --git a/tests/Ramstack.FileSystem.FileProvider.Tests/Ramstack.FileSystem.FileProvider.Tests.csproj b/tests/Ramstack.FileSystem.FileProvider.Tests/Ramstack.FileSystem.FileProvider.Tests.csproj
index 6dfd52b..45d4bb1 100644
--- a/tests/Ramstack.FileSystem.FileProvider.Tests/Ramstack.FileSystem.FileProvider.Tests.csproj
+++ b/tests/Ramstack.FileSystem.FileProvider.Tests/Ramstack.FileSystem.FileProvider.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
enable
enable
preview
diff --git a/tests/Ramstack.FileSystem.Globbing.Tests/Ramstack.FileSystem.Globbing.Tests.csproj b/tests/Ramstack.FileSystem.Globbing.Tests/Ramstack.FileSystem.Globbing.Tests.csproj
index 78c8a8e..9b7a8fe 100644
--- a/tests/Ramstack.FileSystem.Globbing.Tests/Ramstack.FileSystem.Globbing.Tests.csproj
+++ b/tests/Ramstack.FileSystem.Globbing.Tests/Ramstack.FileSystem.Globbing.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
enable
enable
preview
diff --git a/tests/Ramstack.FileSystem.Google.Tests/Ramstack.FileSystem.Google.Tests.csproj b/tests/Ramstack.FileSystem.Google.Tests/Ramstack.FileSystem.Google.Tests.csproj
index 2ad9322..3541529 100644
--- a/tests/Ramstack.FileSystem.Google.Tests/Ramstack.FileSystem.Google.Tests.csproj
+++ b/tests/Ramstack.FileSystem.Google.Tests/Ramstack.FileSystem.Google.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
enable
enable
preview
diff --git a/tests/Ramstack.FileSystem.Physical.Tests/Ramstack.FileSystem.Physical.Tests.csproj b/tests/Ramstack.FileSystem.Physical.Tests/Ramstack.FileSystem.Physical.Tests.csproj
index ee7a0eb..7fc3ba7 100644
--- a/tests/Ramstack.FileSystem.Physical.Tests/Ramstack.FileSystem.Physical.Tests.csproj
+++ b/tests/Ramstack.FileSystem.Physical.Tests/Ramstack.FileSystem.Physical.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
enable
enable
preview
diff --git a/tests/Ramstack.FileSystem.Prefixed.Tests/Ramstack.FileSystem.Prefixed.Tests.csproj b/tests/Ramstack.FileSystem.Prefixed.Tests/Ramstack.FileSystem.Prefixed.Tests.csproj
index fdeea30..e59e6f1 100644
--- a/tests/Ramstack.FileSystem.Prefixed.Tests/Ramstack.FileSystem.Prefixed.Tests.csproj
+++ b/tests/Ramstack.FileSystem.Prefixed.Tests/Ramstack.FileSystem.Prefixed.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
enable
enable
preview
diff --git a/tests/Ramstack.FileSystem.Readonly.Tests/Ramstack.FileSystem.Readonly.Tests.csproj b/tests/Ramstack.FileSystem.Readonly.Tests/Ramstack.FileSystem.Readonly.Tests.csproj
index b606c4d..8be8104 100644
--- a/tests/Ramstack.FileSystem.Readonly.Tests/Ramstack.FileSystem.Readonly.Tests.csproj
+++ b/tests/Ramstack.FileSystem.Readonly.Tests/Ramstack.FileSystem.Readonly.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
enable
enable
preview
diff --git a/tests/Ramstack.FileSystem.Specification.Tests/Ramstack.FileSystem.Specification.Tests.csproj b/tests/Ramstack.FileSystem.Specification.Tests/Ramstack.FileSystem.Specification.Tests.csproj
index e6f96ab..9f69632 100644
--- a/tests/Ramstack.FileSystem.Specification.Tests/Ramstack.FileSystem.Specification.Tests.csproj
+++ b/tests/Ramstack.FileSystem.Specification.Tests/Ramstack.FileSystem.Specification.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
Suite of NUnit tests to check specifications for Ramstack.FileSystem.
enable
enable
diff --git a/tests/Ramstack.FileSystem.Sub.Tests/Ramstack.FileSystem.Sub.Tests.csproj b/tests/Ramstack.FileSystem.Sub.Tests/Ramstack.FileSystem.Sub.Tests.csproj
index 377b86d..6802ffc 100644
--- a/tests/Ramstack.FileSystem.Sub.Tests/Ramstack.FileSystem.Sub.Tests.csproj
+++ b/tests/Ramstack.FileSystem.Sub.Tests/Ramstack.FileSystem.Sub.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net6.0;net8.0
enable
enable
preview