diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index ff21958..0baf87a 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -17,6 +17,8 @@ jobs:
steps:
- uses: actions/checkout@v7
+ with:
+ fetch-depth: '0'
- name: Setup .NET
uses: actions/setup-dotnet@v6
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 7f643f7..3bab96b 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -32,6 +32,9 @@ jobs:
dotnet-version: |
11.0.x
+ - name: Restore tools
+ run: dotnet tool restore
+
- name: Restore dependencies
run: dotnet restore
- name: Build
@@ -39,6 +42,8 @@ jobs:
- name: Package
run: dotnet pack -c Release --no-build --property:PackageOutputPath=../../nupkgs
+ - name: Validate Package
+ run: dotnet tool run dotnet-validate -- package local ./nupkgs/*.nupkg
- name: NuGet login (OIDC → temp API key)
uses: NuGet/login@v1
diff --git a/Directory.Build.props b/Directory.Build.props
index 563c9f9..af3ca34 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,6 +1,6 @@
- net8.0;net9.0;net10.0;net11.0
+ net8.0;net10.0;net11.0
latest
enable
diff --git a/Directory.Packages.props b/Directory.Packages.props
index b762140..07f8993 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -5,8 +5,7 @@
-
-
+
@@ -16,7 +15,7 @@
-
+
@@ -26,18 +25,9 @@
-
-
-
-
-
-
-
-
-
-
+
@@ -53,28 +43,21 @@
-
-
+
+
-
+
-
-
-
-
-
-
-
@@ -82,7 +65,7 @@
-
+
diff --git a/src/Immediate.Cache.Analyzers/Immediate.Cache.Analyzers.csproj b/src/Immediate.Cache.Analyzers/Immediate.Cache.Analyzers.csproj
index 75b20ce..4f21b1a 100644
--- a/src/Immediate.Cache.Analyzers/Immediate.Cache.Analyzers.csproj
+++ b/src/Immediate.Cache.Analyzers/Immediate.Cache.Analyzers.csproj
@@ -1,18 +1,36 @@
-
+
- netstandard2.0;net10.0
- true
- true
+ roslyn4.8;roslyn5.0;roslyn5.9
+ true
+ true
-
+
-
-
+
+
+
+ .NETStandard
+ v2.0
+ .NETStandard,Version=v2.0
+
+
+
+ .NETStandard
+ v2.0
+ .NETStandard,Version=v2.0
+
+
+
+ .NETStandard
+ v2.0
+ .NETStandard,Version=v2.0
+
+
diff --git a/src/Immediate.Cache.Generators/Immediate.Cache.Generators.csproj b/src/Immediate.Cache.Generators/Immediate.Cache.Generators.csproj
index e726b66..2b82d27 100644
--- a/src/Immediate.Cache.Generators/Immediate.Cache.Generators.csproj
+++ b/src/Immediate.Cache.Generators/Immediate.Cache.Generators.csproj
@@ -1,49 +1,66 @@
- netstandard2.0;net10.0
- true
- true
- $(NoWarn);CA1716
+ roslyn4.8;roslyn5.0;roslyn5.9
+ true
+ true
-
+
-
-
+
+
-
-
-
+
+
+
-
+
-
+
true
$(DefineConstants);SCRIBAN_NO_ASYNC
-
+
-
+
$(GetTargetPathDependsOn);GetDependencyTargetPaths
-
+
-
+
+
+ .NETStandard
+ v2.0
+ .NETStandard,Version=v2.0
+
+
+
+ .NETCoreApp
+ v10.0
+ .NETCoreApp,Version=v10.0
+
+
+
+ .NETCoreApp
+ v10.0
+ .NETCoreApp,Version=v10.0
+
+
diff --git a/src/Immediate.Cache/Immediate.Cache.csproj b/src/Immediate.Cache/Immediate.Cache.csproj
index bb01835..7767438 100644
--- a/src/Immediate.Cache/Immediate.Cache.csproj
+++ b/src/Immediate.Cache/Immediate.Cache.csproj
@@ -3,6 +3,9 @@
true
false
+
+ true
+ 2.0.0
@@ -22,14 +25,8 @@
-
-
-
-
-
-
-
-
+
+
-
-
+
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ roslyn4.8
+ roslyn5.0
+ roslyn5.9
+
+
+
+
+ TargetFramework=$(RoslynVersion)
+
+
+
+ TargetFramework=$(RoslynVersion)
+
+
+
diff --git a/tests/Immediate.Cache.FunctionalTests/ApplicationCacheTests.cs b/tests/Immediate.Cache.FunctionalTests/ApplicationCacheTests.cs
index bdfc2ca..8d06170 100644
--- a/tests/Immediate.Cache.FunctionalTests/ApplicationCacheTests.cs
+++ b/tests/Immediate.Cache.FunctionalTests/ApplicationCacheTests.cs
@@ -1,6 +1,6 @@
+using System.Globalization;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
-using Xunit;
namespace Immediate.Cache.FunctionalTests;
@@ -29,7 +29,7 @@ public async Task GetValueCachesValue()
Assert.True(response.ExecutedHandler);
var memoryCache = _serviceProvider.GetRequiredService();
- Assert.True(memoryCache.TryGetValue($"GetValue(query: {request.Value})", out var _));
+ Assert.True(memoryCache.TryGetValue(string.Create(CultureInfo.InvariantCulture, $"GetValue(query: {request.Value})"), out var _));
}
[Fact]
@@ -40,7 +40,7 @@ public async Task SetValueCachesValue()
cache.SetValue(request, new(4, ExecutedHandler: false));
var memoryCache = _serviceProvider.GetRequiredService();
- Assert.True(memoryCache.TryGetValue($"GetValue(query: {request.Value})", out var _));
+ Assert.True(memoryCache.TryGetValue(string.Create(CultureInfo.InvariantCulture, $"GetValue(query: {request.Value})"), out var _));
var response = await cache.GetValue(request, TestContext.Current.CancellationToken);
diff --git a/tests/Immediate.Cache.FunctionalTests/Immediate.Cache.FunctionalTests.csproj b/tests/Immediate.Cache.FunctionalTests/Immediate.Cache.FunctionalTests.csproj
index d3ea781..6848c8c 100644
--- a/tests/Immediate.Cache.FunctionalTests/Immediate.Cache.FunctionalTests.csproj
+++ b/tests/Immediate.Cache.FunctionalTests/Immediate.Cache.FunctionalTests.csproj
@@ -4,7 +4,12 @@
Exe
+
+
+
+
+
@@ -12,9 +17,23 @@
-
-
-
+
+
+
+
+ roslyn4.8
+ roslyn5.0
+ roslyn5.9
+
+
+
+
+ TargetFramework=$(RoslynVersion)
+
+
+
+ TargetFramework=$(RoslynVersion)
+
diff --git a/tests/Immediate.Cache.Tests/Immediate.Cache.Tests.csproj b/tests/Immediate.Cache.Tests/Immediate.Cache.Tests.csproj
index 104cf1f..b726e7c 100644
--- a/tests/Immediate.Cache.Tests/Immediate.Cache.Tests.csproj
+++ b/tests/Immediate.Cache.Tests/Immediate.Cache.Tests.csproj
@@ -1,61 +1,72 @@
- Exe
- <_SkipUpgradeNetAnalyzersNuGetWarning>true
+ Exe
+ <_SkipUpgradeNetAnalyzersNuGetWarning>true
+
+
+
+ runtime-async=on
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
+
-
+
-
-
-
-
+
+
+ roslyn4.8
+ roslyn5.0
+ roslyn5.9
+
+
-
+
+ TargetFramework=$(RoslynVersion)
+
+
-
-
+
+ TargetFramework=$(RoslynVersion)
+
+
-
+
+
+
+
+
+