From 6756ddeac9985e881b870ba6f734c8c85deab4b2 Mon Sep 17 00:00:00 2001 From: Stuart Turner Date: Wed, 9 Sep 2026 11:33:55 -0500 Subject: [PATCH] Properly Multi-target Roslyn --- .github/workflows/build.yml | 2 + .github/workflows/release.yml | 5 ++ Directory.Build.props | 2 +- Directory.Packages.props | 23 +----- .../Immediate.Apis.Analyzers.csproj | 20 ++++- .../Immediate.Apis.CodeFixes.csproj | 24 +++++- .../Immediate.Apis.Generators.csproj | 44 +++++++--- src/Immediate.Apis/Immediate.Apis.csproj | 82 ++++++++++++++----- ...mediate.Apis.FunctionalTests.Scalar.csproj | 36 +++++--- ...ediate.Apis.FunctionalTests.Swagger.csproj | 31 +++++-- .../Immediate.Apis.Tests.csproj | 35 ++++++-- 11 files changed, 222 insertions(+), 82 deletions(-) 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 179d532..1799631 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 0ed37f8..83cbe17 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -5,7 +5,7 @@ - + @@ -34,14 +34,6 @@ - - - - - - - - @@ -51,27 +43,20 @@ - + - + - - - - - - - @@ -79,7 +64,7 @@ - + diff --git a/src/Immediate.Apis.Analyzers/Immediate.Apis.Analyzers.csproj b/src/Immediate.Apis.Analyzers/Immediate.Apis.Analyzers.csproj index 284b085..5094536 100644 --- a/src/Immediate.Apis.Analyzers/Immediate.Apis.Analyzers.csproj +++ b/src/Immediate.Apis.Analyzers/Immediate.Apis.Analyzers.csproj @@ -1,7 +1,7 @@ - netstandard2.0;net10.0 + roslyn4.8;roslyn5.0;roslyn5.9 true true @@ -15,4 +15,22 @@ + + .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.Apis.CodeFixes/Immediate.Apis.CodeFixes.csproj b/src/Immediate.Apis.CodeFixes/Immediate.Apis.CodeFixes.csproj index 5a61a5d..442f939 100644 --- a/src/Immediate.Apis.CodeFixes/Immediate.Apis.CodeFixes.csproj +++ b/src/Immediate.Apis.CodeFixes/Immediate.Apis.CodeFixes.csproj @@ -1,11 +1,15 @@ - netstandard2.0 + roslyn4.8;roslyn5.0;roslyn5.9 true true + + + + @@ -16,4 +20,22 @@ + + .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.Apis.Generators/Immediate.Apis.Generators.csproj b/src/Immediate.Apis.Generators/Immediate.Apis.Generators.csproj index 3a14f50..9a95e21 100644 --- a/src/Immediate.Apis.Generators/Immediate.Apis.Generators.csproj +++ b/src/Immediate.Apis.Generators/Immediate.Apis.Generators.csproj @@ -1,48 +1,66 @@ - netstandard2.0;net10.0 + roslyn4.8;roslyn5.0;roslyn5.9 true - 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.Apis/Immediate.Apis.csproj b/src/Immediate.Apis/Immediate.Apis.csproj index e4fd5a7..1579698 100644 --- a/src/Immediate.Apis/Immediate.Apis.csproj +++ b/src/Immediate.Apis/Immediate.Apis.csproj @@ -1,9 +1,11 @@ - net8.0;net9.0;net10.0;net11.0 true false + + true + 6.0.0 @@ -43,57 +45,95 @@ PackagePath="lib/$(TargetFramework)" /> - - - + - - - - - + - - - + + + + + + + + + + - - - + + roslyn4.8 + roslyn5.0 + roslyn5.9 + + + + + TargetFramework=$(RoslynVersion) + + + + TargetFramework=$(RoslynVersion) + + + + TargetFramework=$(RoslynVersion) + + + diff --git a/tests/Immediate.Apis.FunctionalTests.Scalar/Immediate.Apis.FunctionalTests.Scalar.csproj b/tests/Immediate.Apis.FunctionalTests.Scalar/Immediate.Apis.FunctionalTests.Scalar.csproj index c8436f5..d6e2fbd 100644 --- a/tests/Immediate.Apis.FunctionalTests.Scalar/Immediate.Apis.FunctionalTests.Scalar.csproj +++ b/tests/Immediate.Apis.FunctionalTests.Scalar/Immediate.Apis.FunctionalTests.Scalar.csproj @@ -1,27 +1,41 @@ - + - net10.0 - - - $(NoWarn);NU1903 + net10.0;net11.0 + + + + + + - - - + + roslyn4.8 + roslyn5.0 + roslyn5.9 + + - - - + + TargetFramework=$(RoslynVersion) + + + + TargetFramework=$(RoslynVersion) + + + + TargetFramework=$(RoslynVersion) + diff --git a/tests/Immediate.Apis.FunctionalTests.Swagger/Immediate.Apis.FunctionalTests.Swagger.csproj b/tests/Immediate.Apis.FunctionalTests.Swagger/Immediate.Apis.FunctionalTests.Swagger.csproj index 783b278..357c4a6 100644 --- a/tests/Immediate.Apis.FunctionalTests.Swagger/Immediate.Apis.FunctionalTests.Swagger.csproj +++ b/tests/Immediate.Apis.FunctionalTests.Swagger/Immediate.Apis.FunctionalTests.Swagger.csproj @@ -1,20 +1,33 @@ - - net8.0;net9.0;net10.0 - + + + + + - - - + + roslyn4.8 + roslyn5.0 + roslyn5.9 + + - - - + + TargetFramework=$(RoslynVersion) + + + + TargetFramework=$(RoslynVersion) + + + + TargetFramework=$(RoslynVersion) + diff --git a/tests/Immediate.Apis.Tests/Immediate.Apis.Tests.csproj b/tests/Immediate.Apis.Tests/Immediate.Apis.Tests.csproj index 81dfdd2..e9c3028 100644 --- a/tests/Immediate.Apis.Tests/Immediate.Apis.Tests.csproj +++ b/tests/Immediate.Apis.Tests/Immediate.Apis.Tests.csproj @@ -2,8 +2,10 @@ Exe - - $(NoWarn);NU1603 + + + + runtime-async=on @@ -47,10 +49,31 @@ - - - - + + + + roslyn4.8 + roslyn5.0 + roslyn5.9 + + + + + TargetFramework=$(RoslynVersion) + + + + + TargetFramework=$(RoslynVersion) + + + + + TargetFramework=$(RoslynVersion) + + + +