diff --git a/.github/workflow-gen/Program.cs b/.github/workflow-gen/Program.cs
index 44748172..73d4099c 100644
--- a/.github/workflow-gen/Program.cs
+++ b/.github/workflow-gen/Program.cs
@@ -9,22 +9,26 @@
new("ignore-this",
["IgnoreThis"],
["IgnoreThis.Tests"],
- "it"),
+ "it",
+ ["ubuntu-latest", "windows-latest"]),
new("access-token-management",
["AccessTokenManagement", "AccessTokenManagement.OpenIdConnect"],
["AccessTokenManagement.Tests"],
- "atm"),
+ "atm",
+ ["ubuntu-latest"]),
new("identity-model",
["IdentityModel"],
["IdentityModel.Tests"],
- "im"),
+ "im",
+ ["ubuntu-latest", "windows-latest"]),
new("identity-model-oidc-client",
["IdentityModel.OidcClient", "IdentityModel.OidcClient.Extensions"],
["IdentityModel.OidcClient.Tests"],
- "imoc")
+ "imoc",
+ ["ubuntu-latest"])
];
foreach (var component in components)
@@ -54,49 +58,76 @@ void GenerateCiWorkflow(Component component)
workflow.EnvDefaults();
- var job = workflow
+ var buildJob = workflow
.Job("build")
.Name("Build")
- .RunsOn(GitHubHostedRunners.UbuntuLatest)
- .Defaults().Run("bash", component.Name)
- .Job;
+ .Strategy()
+ .Matrix(("os", component.RunsOn))
+ .FailFast(false)
+ .Job
+ .RunsOn("${{ matrix.os }}")
+ .Defaults()
+ .Run("bash", component.Name)
+ .Job;
- job.Permissions(
- actions: Permission.Read,
- contents: Permission.Read,
- checks: Permission.Write,
- packages: Permission.Write);
+ buildJob.Permissions(checks: Permission.Write, contents: Permission.Read);
- job.TimeoutMinutes(15);
+ buildJob.TimeoutMinutes(15);
- job.Step()
+ buildJob.Step()
.ActionsCheckout();
- job.StepSetupDotNet();
+ buildJob.StepSetupDotNet();
foreach (var testProject in component.Tests)
{
- job.StepTestAndReport(component.Name, testProject);
+ buildJob.StepTestAndReport(component.Name, testProject, "net8.0");
+ buildJob.StepTestAndReport(component.Name, testProject, "net9.0");
+ if (component.RunsOn.Contains("windows-latest"))
+ {
+ buildJob.StepTestAndReport(component.Name, testProject, "net481");
+ }
}
- job.StepInstallCACerts();
+ var packJob = workflow.Job("pack")
+ .Name("Pack")
+ .RunsOn(GitHubHostedRunners.UbuntuLatest)
+ .Needs("build")
+ .Defaults()
+ .Run("bash", component.Name)
+ .Job;
+
+ packJob.Permissions(
+ actions: Permission.Read,
+ contents: Permission.Read,
+ checks: Permission.Write,
+ packages: Permission.Write);
+
+ packJob.TimeoutMinutes(15);
- job.StepToolRestore();
+ packJob.Step()
+ .ActionsCheckout();
+
+ packJob.StepSetupDotNet();
+
+ packJob.StepInstallCACerts();
+
+ packJob.StepToolRestore();
foreach (var project in component.Projects)
{
- job.StepPack(project);
+ packJob.StepPack(project);
}
- job.StepSign();
+ packJob.StepSign();
- job.StepPush("MyGet", "https://www.myget.org/F/duende_identityserver/api/v2/package", "MYGET");
+ packJob.StepPush("MyGet", "https://www.myget.org/F/duende_identityserver/api/v2/package", "MYGET");
- job.StepPush("GitHub", "https://nuget.pkg.github.com/DuendeSoftware/index.json", "GITHUB_TOKEN")
+ packJob.StepPush("GitHub", "https://nuget.pkg.github.com/DuendeSoftware/index.json", "GITHUB_TOKEN")
.Env(("GITHUB_TOKEN", contexts.Secrets.GitHubToken),
("NUGET_AUTH_TOKEN", contexts.Secrets.GitHubToken));
- job.StepUploadArtifacts(component.Name);
+ packJob.StepUploadArtifacts(component.Name);
var fileName = $"{component.Name}-ci";
WriteWorkflow(workflow, fileName);
@@ -120,7 +151,7 @@ void GenerateReleaseWorkflow(Component component)
.Defaults().Run("bash", component.Name).Job;
tagJob.Step()
- .ActionsCheckout();
+ .ActionsCheckout("11bd71901bbe5b1630ceea73d27597364c9af683");
tagJob.StepSetupDotNet();
@@ -180,7 +211,7 @@ void WriteWorkflow(Workflow workflow, string fileName)
Console.WriteLine($"Wrote workflow to {filePath}");
}
-record Component(string Name, string[] Projects, string[] Tests, string TagPrefix);
+record Component(string Name, string[] Projects, string[] Tests, string TagPrefix, string[] RunsOn);
public static class StepExtensions
{
@@ -197,27 +228,40 @@ public static void StepSetupDotNet(this Job job)
public static Step IfRefMain(this Step step)
=> step.If("github.ref == 'refs/heads/main'");
- public static void StepTestAndReport(this Job job, string componentName, string testProject)
+ public static Step IfWindows(this Step step)
+ => step.If("matrix.os == 'windows-latest'");
+
+ public static void StepTestAndReport(this Job job, string componentName, string testProject, string framework)
{
var path = $"test/{testProject}";
- var logFileName = "Tests.trx";
- var flags = $"--logger \"console;verbosity=normal\" " +
+ var logFileName = $"tests-{framework}.trx";
+ var flags = $"--configuration Release " +
+ $"--framework {framework} " +
+ $"--logger \"console;verbosity=normal\" " +
$"--logger \"trx;LogFileName={logFileName}\" " +
$"--collect:\"XPlat Code Coverage\"";
- job.Step()
- .Name($"Test - {testProject}")
- .Run($"dotnet test -c Release {path} {flags}");
+ var isWindows = framework == "net481";
- job.Step()
- .Name($"Test report - {testProject}")
+ var testStep = job.Step()
+ .Name($"Test - {testProject}-{framework}")
+ .Run($"dotnet test {path} {flags}");
+
+ var testReportStep = job.Step()
+ .Name($"Test report {testProject}-{framework}")
.Uses("dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5") // v1.9.1
.If("success() || failure()")
.With(
- ("name", $"Test Report - {testProject}"),
+ ("name", $"Test Report {testProject}-{framework}"),
("path", $"{componentName}/{path}/TestResults/{logFileName}"),
("reporter", "dotnet-trx"),
("fail-on-error", "true"),
("fail-on-empty", "true"));
+
+ if (isWindows)
+ {
+ testStep.IfWindows();
+ testReportStep.IfWindows();
+ }
}
// These intermediate certificates are required for signing and are not installed on the GitHub runners by default.
diff --git a/.github/workflows/access-token-management-ci.yml b/.github/workflows/access-token-management-ci.yml
index e60539b0..66fae85a 100644
--- a/.github/workflows/access-token-management-ci.yml
+++ b/.github/workflows/access-token-management-ci.yml
@@ -19,16 +19,19 @@ env:
jobs:
build:
name: Build
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
permissions:
- actions: read
checks: write
contents: read
- packages: write
defaults:
run:
shell: bash
working-directory: access-token-management
+ strategy:
+ matrix:
+ os:
+ - ubuntu-latest
+ fail-fast: false
timeout-minutes: 15
steps:
- name: Checkout
@@ -42,17 +45,55 @@ jobs:
6.0.x
8.0.x
9.0.x
- - name: Test - AccessTokenManagement.Tests
- run: dotnet test -c Release test/AccessTokenManagement.Tests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
- - name: Test report - AccessTokenManagement.Tests
+ - name: Test - AccessTokenManagement.Tests-net8.0
+ run: dotnet test test/AccessTokenManagement.Tests --configuration Release --framework net8.0 --logger "console;verbosity=normal" --logger "trx;LogFileName=tests-net8.0.trx" --collect:"XPlat Code Coverage"
+ - name: Test report AccessTokenManagement.Tests-net8.0
+ if: success() || failure()
+ uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
+ with:
+ name: Test Report AccessTokenManagement.Tests-net8.0
+ path: access-token-management/test/AccessTokenManagement.Tests/TestResults/tests-net8.0.trx
+ reporter: dotnet-trx
+ fail-on-error: true
+ fail-on-empty: true
+ - name: Test - AccessTokenManagement.Tests-net9.0
+ run: dotnet test test/AccessTokenManagement.Tests --configuration Release --framework net9.0 --logger "console;verbosity=normal" --logger "trx;LogFileName=tests-net9.0.trx" --collect:"XPlat Code Coverage"
+ - name: Test report AccessTokenManagement.Tests-net9.0
if: success() || failure()
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
with:
- name: Test Report - AccessTokenManagement.Tests
- path: access-token-management/test/AccessTokenManagement.Tests/TestResults/Tests.trx
+ name: Test Report AccessTokenManagement.Tests-net9.0
+ path: access-token-management/test/AccessTokenManagement.Tests/TestResults/tests-net9.0.trx
reporter: dotnet-trx
fail-on-error: true
fail-on-empty: true
+ pack:
+ name: Pack
+ needs:
+ - build
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ checks: write
+ contents: read
+ packages: write
+ defaults:
+ run:
+ shell: bash
+ working-directory: access-token-management
+ timeout-minutes: 15
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - name: Setup Dotnet
+ uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25
+ with:
+ dotnet-version: |-
+ 6.0.x
+ 8.0.x
+ 9.0.x
- name: Install Sectigo CodeSiging CA certificates
run: |-
sudo apt-get update
diff --git a/.github/workflows/access-token-management-release.yml b/.github/workflows/access-token-management-release.yml
index 84e74bac..a5abcfb1 100644
--- a/.github/workflows/access-token-management-release.yml
+++ b/.github/workflows/access-token-management-release.yml
@@ -25,7 +25,7 @@ jobs:
working-directory: access-token-management
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
fetch-depth: 0
- name: Setup Dotnet
diff --git a/.github/workflows/identity-model-ci.yml b/.github/workflows/identity-model-ci.yml
index 0786abe1..6ac2d357 100644
--- a/.github/workflows/identity-model-ci.yml
+++ b/.github/workflows/identity-model-ci.yml
@@ -19,16 +19,20 @@ env:
jobs:
build:
name: Build
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
permissions:
- actions: read
checks: write
contents: read
- packages: write
defaults:
run:
shell: bash
working-directory: identity-model
+ strategy:
+ matrix:
+ os:
+ - ubuntu-latest
+ - windows-latest
+ fail-fast: false
timeout-minutes: 15
steps:
- name: Checkout
@@ -42,17 +46,67 @@ jobs:
6.0.x
8.0.x
9.0.x
- - name: Test - IdentityModel.Tests
- run: dotnet test -c Release test/IdentityModel.Tests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
- - name: Test report - IdentityModel.Tests
+ - name: Test - IdentityModel.Tests-net8.0
+ run: dotnet test test/IdentityModel.Tests --configuration Release --framework net8.0 --logger "console;verbosity=normal" --logger "trx;LogFileName=tests-net8.0.trx" --collect:"XPlat Code Coverage"
+ - name: Test report IdentityModel.Tests-net8.0
+ if: success() || failure()
+ uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
+ with:
+ name: Test Report IdentityModel.Tests-net8.0
+ path: identity-model/test/IdentityModel.Tests/TestResults/tests-net8.0.trx
+ reporter: dotnet-trx
+ fail-on-error: true
+ fail-on-empty: true
+ - name: Test - IdentityModel.Tests-net9.0
+ run: dotnet test test/IdentityModel.Tests --configuration Release --framework net9.0 --logger "console;verbosity=normal" --logger "trx;LogFileName=tests-net9.0.trx" --collect:"XPlat Code Coverage"
+ - name: Test report IdentityModel.Tests-net9.0
if: success() || failure()
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
with:
- name: Test Report - IdentityModel.Tests
- path: identity-model/test/IdentityModel.Tests/TestResults/Tests.trx
+ name: Test Report IdentityModel.Tests-net9.0
+ path: identity-model/test/IdentityModel.Tests/TestResults/tests-net9.0.trx
reporter: dotnet-trx
fail-on-error: true
fail-on-empty: true
+ - name: Test - IdentityModel.Tests-net481
+ if: matrix.os == 'windows-latest'
+ run: dotnet test test/IdentityModel.Tests --configuration Release --framework net481 --logger "console;verbosity=normal" --logger "trx;LogFileName=tests-net481.trx" --collect:"XPlat Code Coverage"
+ - name: Test report IdentityModel.Tests-net481
+ if: matrix.os == 'windows-latest'
+ uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
+ with:
+ name: Test Report IdentityModel.Tests-net481
+ path: identity-model/test/IdentityModel.Tests/TestResults/tests-net481.trx
+ reporter: dotnet-trx
+ fail-on-error: true
+ fail-on-empty: true
+ pack:
+ name: Pack
+ needs:
+ - build
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ checks: write
+ contents: read
+ packages: write
+ defaults:
+ run:
+ shell: bash
+ working-directory: identity-model
+ timeout-minutes: 15
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - name: Setup Dotnet
+ uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25
+ with:
+ dotnet-version: |-
+ 6.0.x
+ 8.0.x
+ 9.0.x
- name: Install Sectigo CodeSiging CA certificates
run: |-
sudo apt-get update
diff --git a/.github/workflows/identity-model-oidc-client-ci.yml b/.github/workflows/identity-model-oidc-client-ci.yml
index 90adf5b2..b1920d6c 100644
--- a/.github/workflows/identity-model-oidc-client-ci.yml
+++ b/.github/workflows/identity-model-oidc-client-ci.yml
@@ -19,16 +19,19 @@ env:
jobs:
build:
name: Build
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
permissions:
- actions: read
checks: write
contents: read
- packages: write
defaults:
run:
shell: bash
working-directory: identity-model-oidc-client
+ strategy:
+ matrix:
+ os:
+ - ubuntu-latest
+ fail-fast: false
timeout-minutes: 15
steps:
- name: Checkout
@@ -42,17 +45,55 @@ jobs:
6.0.x
8.0.x
9.0.x
- - name: Test - IdentityModel.OidcClient.Tests
- run: dotnet test -c Release test/IdentityModel.OidcClient.Tests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
- - name: Test report - IdentityModel.OidcClient.Tests
+ - name: Test - IdentityModel.OidcClient.Tests-net8.0
+ run: dotnet test test/IdentityModel.OidcClient.Tests --configuration Release --framework net8.0 --logger "console;verbosity=normal" --logger "trx;LogFileName=tests-net8.0.trx" --collect:"XPlat Code Coverage"
+ - name: Test report IdentityModel.OidcClient.Tests-net8.0
+ if: success() || failure()
+ uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
+ with:
+ name: Test Report IdentityModel.OidcClient.Tests-net8.0
+ path: identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/TestResults/tests-net8.0.trx
+ reporter: dotnet-trx
+ fail-on-error: true
+ fail-on-empty: true
+ - name: Test - IdentityModel.OidcClient.Tests-net9.0
+ run: dotnet test test/IdentityModel.OidcClient.Tests --configuration Release --framework net9.0 --logger "console;verbosity=normal" --logger "trx;LogFileName=tests-net9.0.trx" --collect:"XPlat Code Coverage"
+ - name: Test report IdentityModel.OidcClient.Tests-net9.0
if: success() || failure()
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
with:
- name: Test Report - IdentityModel.OidcClient.Tests
- path: identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/TestResults/Tests.trx
+ name: Test Report IdentityModel.OidcClient.Tests-net9.0
+ path: identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/TestResults/tests-net9.0.trx
reporter: dotnet-trx
fail-on-error: true
fail-on-empty: true
+ pack:
+ name: Pack
+ needs:
+ - build
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ checks: write
+ contents: read
+ packages: write
+ defaults:
+ run:
+ shell: bash
+ working-directory: identity-model-oidc-client
+ timeout-minutes: 15
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - name: Setup Dotnet
+ uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25
+ with:
+ dotnet-version: |-
+ 6.0.x
+ 8.0.x
+ 9.0.x
- name: Install Sectigo CodeSiging CA certificates
run: |-
sudo apt-get update
diff --git a/.github/workflows/identity-model-oidc-client-release.yml b/.github/workflows/identity-model-oidc-client-release.yml
index fa71feca..c9ea576e 100644
--- a/.github/workflows/identity-model-oidc-client-release.yml
+++ b/.github/workflows/identity-model-oidc-client-release.yml
@@ -25,7 +25,7 @@ jobs:
working-directory: identity-model-oidc-client
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
fetch-depth: 0
- name: Setup Dotnet
diff --git a/.github/workflows/identity-model-release.yml b/.github/workflows/identity-model-release.yml
index cf91d1eb..dd9715d1 100644
--- a/.github/workflows/identity-model-release.yml
+++ b/.github/workflows/identity-model-release.yml
@@ -25,7 +25,7 @@ jobs:
working-directory: identity-model
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
fetch-depth: 0
- name: Setup Dotnet
diff --git a/.github/workflows/ignore-this-ci.yml b/.github/workflows/ignore-this-ci.yml
index f1598fee..2a443224 100644
--- a/.github/workflows/ignore-this-ci.yml
+++ b/.github/workflows/ignore-this-ci.yml
@@ -19,16 +19,20 @@ env:
jobs:
build:
name: Build
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
permissions:
- actions: read
checks: write
contents: read
- packages: write
defaults:
run:
shell: bash
working-directory: ignore-this
+ strategy:
+ matrix:
+ os:
+ - ubuntu-latest
+ - windows-latest
+ fail-fast: false
timeout-minutes: 15
steps:
- name: Checkout
@@ -42,17 +46,67 @@ jobs:
6.0.x
8.0.x
9.0.x
- - name: Test - IgnoreThis.Tests
- run: dotnet test -c Release test/IgnoreThis.Tests --logger "console;verbosity=normal" --logger "trx;LogFileName=Tests.trx" --collect:"XPlat Code Coverage"
- - name: Test report - IgnoreThis.Tests
+ - name: Test - IgnoreThis.Tests-net8.0
+ run: dotnet test test/IgnoreThis.Tests --configuration Release --framework net8.0 --logger "console;verbosity=normal" --logger "trx;LogFileName=tests-net8.0.trx" --collect:"XPlat Code Coverage"
+ - name: Test report IgnoreThis.Tests-net8.0
+ if: success() || failure()
+ uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
+ with:
+ name: Test Report IgnoreThis.Tests-net8.0
+ path: ignore-this/test/IgnoreThis.Tests/TestResults/tests-net8.0.trx
+ reporter: dotnet-trx
+ fail-on-error: true
+ fail-on-empty: true
+ - name: Test - IgnoreThis.Tests-net9.0
+ run: dotnet test test/IgnoreThis.Tests --configuration Release --framework net9.0 --logger "console;verbosity=normal" --logger "trx;LogFileName=tests-net9.0.trx" --collect:"XPlat Code Coverage"
+ - name: Test report IgnoreThis.Tests-net9.0
if: success() || failure()
uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
with:
- name: Test Report - IgnoreThis.Tests
- path: ignore-this/test/IgnoreThis.Tests/TestResults/Tests.trx
+ name: Test Report IgnoreThis.Tests-net9.0
+ path: ignore-this/test/IgnoreThis.Tests/TestResults/tests-net9.0.trx
reporter: dotnet-trx
fail-on-error: true
fail-on-empty: true
+ - name: Test - IgnoreThis.Tests-net481
+ if: matrix.os == 'windows-latest'
+ run: dotnet test test/IgnoreThis.Tests --configuration Release --framework net481 --logger "console;verbosity=normal" --logger "trx;LogFileName=tests-net481.trx" --collect:"XPlat Code Coverage"
+ - name: Test report IgnoreThis.Tests-net481
+ if: matrix.os == 'windows-latest'
+ uses: dorny/test-reporter@31a54ee7ebcacc03a09ea97a7e5465a47b84aea5
+ with:
+ name: Test Report IgnoreThis.Tests-net481
+ path: ignore-this/test/IgnoreThis.Tests/TestResults/tests-net481.trx
+ reporter: dotnet-trx
+ fail-on-error: true
+ fail-on-empty: true
+ pack:
+ name: Pack
+ needs:
+ - build
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ checks: write
+ contents: read
+ packages: write
+ defaults:
+ run:
+ shell: bash
+ working-directory: ignore-this
+ timeout-minutes: 15
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ - name: Setup Dotnet
+ uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25
+ with:
+ dotnet-version: |-
+ 6.0.x
+ 8.0.x
+ 9.0.x
- name: Install Sectigo CodeSiging CA certificates
run: |-
sudo apt-get update
diff --git a/.github/workflows/ignore-this-release.yml b/.github/workflows/ignore-this-release.yml
index 755e9052..78f379fe 100644
--- a/.github/workflows/ignore-this-release.yml
+++ b/.github/workflows/ignore-this-release.yml
@@ -25,7 +25,7 @@ jobs:
working-directory: ignore-this
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
fetch-depth: 0
- name: Setup Dotnet
diff --git a/access-token-management/test/AccessTokenManagement.Tests/AccessTokenManagement.Tests.net8.0.v3.ncrunchproject b/access-token-management/test/AccessTokenManagement.Tests/AccessTokenManagement.Tests.net8.0.v3.ncrunchproject
new file mode 100644
index 00000000..46105ee2
--- /dev/null
+++ b/access-token-management/test/AccessTokenManagement.Tests/AccessTokenManagement.Tests.net8.0.v3.ncrunchproject
@@ -0,0 +1,8 @@
+
+
+
+ AspNetTestHostCompatibility
+ LostReference
+
+
+
\ No newline at end of file
diff --git a/access-token-management/test/AccessTokenManagement.Tests/AccessTokenManagement.Tests.net9.0.v3.ncrunchproject b/access-token-management/test/AccessTokenManagement.Tests/AccessTokenManagement.Tests.net9.0.v3.ncrunchproject
new file mode 100644
index 00000000..46105ee2
--- /dev/null
+++ b/access-token-management/test/AccessTokenManagement.Tests/AccessTokenManagement.Tests.net9.0.v3.ncrunchproject
@@ -0,0 +1,8 @@
+
+
+
+ AspNetTestHostCompatibility
+ LostReference
+
+
+
\ No newline at end of file
diff --git a/identity-model-oidc-client/src/IdentityModel.OidcClient.Extensions/IdentityModel.OidcClient.Extensions.csproj b/identity-model-oidc-client/src/IdentityModel.OidcClient.Extensions/IdentityModel.OidcClient.Extensions.csproj
index 77abc243..d998da0c 100644
--- a/identity-model-oidc-client/src/IdentityModel.OidcClient.Extensions/IdentityModel.OidcClient.Extensions.csproj
+++ b/identity-model-oidc-client/src/IdentityModel.OidcClient.Extensions/IdentityModel.OidcClient.Extensions.csproj
@@ -1,6 +1,6 @@
- netstandard2.0;net6.0;net8.0
+ netstandard2.0;net8.0
Duende.IdentityModel.OidcClient
Duende.IdentityModel.OidcClient.Extensions
Duende.IdentityModel.OidcClient.Extensions
diff --git a/identity-model-oidc-client/src/IdentityModel.OidcClient/IdentityModel.OidcClient.csproj b/identity-model-oidc-client/src/IdentityModel.OidcClient/IdentityModel.OidcClient.csproj
index 829d6469..6c465d13 100644
--- a/identity-model-oidc-client/src/IdentityModel.OidcClient/IdentityModel.OidcClient.csproj
+++ b/identity-model-oidc-client/src/IdentityModel.OidcClient/IdentityModel.OidcClient.csproj
@@ -1,6 +1,6 @@
- netstandard2.0;net6.0;net8.0
+ netstandard2.0;net8.0
Duende.IdentityModel.OidcClient
Duende.IdentityModel.OidcClient
Duende.IdentityModel.OidcClient
diff --git a/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.csproj b/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.csproj
index 6f498d1b..44476346 100644
--- a/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.csproj
+++ b/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.csproj
@@ -1,6 +1,6 @@
- net6.0;net8.0
+ net8.0;net9.0
Duende.IdentityModel.OidcClient
../../../key.snk
true
diff --git a/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net6.0.v3.ncrunchproject b/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net6.0.v3.ncrunchproject
index cd54b69b..5ff63f7c 100644
--- a/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net6.0.v3.ncrunchproject
+++ b/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net6.0.v3.ncrunchproject
@@ -2,6 +2,7 @@
LostReference
+ AspNetTestHostCompatibility
\ No newline at end of file
diff --git a/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net8.0.v3.ncrunchproject b/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net8.0.v3.ncrunchproject
index cd54b69b..5ff63f7c 100644
--- a/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net8.0.v3.ncrunchproject
+++ b/identity-model-oidc-client/test/IdentityModel.OidcClient.Tests/IdentityModel.OidcClient.Tests.net8.0.v3.ncrunchproject
@@ -2,6 +2,7 @@
LostReference
+ AspNetTestHostCompatibility
\ No newline at end of file
diff --git a/identity-model/test/IdentityModel.Tests/Verifications/PublicApiVerificationTests.cs b/identity-model/test/IdentityModel.Tests/Verifications/PublicApiVerificationTests.cs
index 2d6cc8ae..a023b63a 100644
--- a/identity-model/test/IdentityModel.Tests/Verifications/PublicApiVerificationTests.cs
+++ b/identity-model/test/IdentityModel.Tests/Verifications/PublicApiVerificationTests.cs
@@ -1,13 +1,13 @@
// Copyright (c) Duende Software. All rights reserved.
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
+#if NET8_0_OR_GREATER
using PublicApiGenerator;
namespace Duende.IdentityModel.Verifications;
public class PublicApiVerificationTests
{
-#if NET8_0
[Fact]
public async Task VerifyPublicApi()
{
@@ -19,5 +19,5 @@ public async Task VerifyPublicApi()
var settings = new VerifySettings();
await Verify(publicApi, settings);
}
-#endif
-}
\ No newline at end of file
+}
+#endif
\ No newline at end of file
diff --git a/ignore-this/src/IgnoreThis/IgnoreThis.csproj b/ignore-this/src/IgnoreThis/IgnoreThis.csproj
index c3769c9e..0e7c05b9 100644
--- a/ignore-this/src/IgnoreThis/IgnoreThis.csproj
+++ b/ignore-this/src/IgnoreThis/IgnoreThis.csproj
@@ -1,6 +1,6 @@
- net8.0
+ netstandard2.0;net8.0;net9.0
enable
true
Duende.IgnoreThis
diff --git a/ignore-this/test/IgnoreThis.Tests/IgnoreThis.Tests.csproj b/ignore-this/test/IgnoreThis.Tests/IgnoreThis.Tests.csproj
index 2d2ae076..36823e58 100644
--- a/ignore-this/test/IgnoreThis.Tests/IgnoreThis.Tests.csproj
+++ b/ignore-this/test/IgnoreThis.Tests/IgnoreThis.Tests.csproj
@@ -1,8 +1,11 @@
- net8.0
+ net8.0;net9.0
Duende.IgnoreThis
+
+ net481;$(TargetFrameworks)
+
diff --git a/src.props b/src.props
index 676c4b97..d8753f7e 100644
--- a/src.props
+++ b/src.props
@@ -33,7 +33,8 @@
../../../key.snk
true
-
+
+ true
true