Multi-target Json and Logger Source Generators between Roslyn v3.11 and v4.0 (#58446...
authorEric Erhardt <eric.erhardt@microsoft.com>
Wed, 15 Sep 2021 14:20:07 +0000 (08:20 -0600)
committerGitHub <noreply@github.com>
Wed, 15 Sep 2021 14:20:07 +0000 (08:20 -0600)
commitcbe463bfb602dde7cbfcf78e5ef87743b4f87a4c
treeaa51316a22486062e31ffc4d34632112caf01482
parent2b8e9aa3ab8edddd0238380298dbcef597d025e2
Multi-target Json and Logger Source Generators between Roslyn v3.11 and v4.0 (#58446) (#59074)

* Multi-target LoggerMessageGenerator between Roslyn v3.11 and v4.0

* Include a .targets file in NuGet packages which will select the correct analyzer assembly depending on which Roslyn version will be used to compile.

* Multi-target JsonSourceGenerator between Roslyn v3.11 and v4.0

* Fix restore

* Update NuGet package MSBuild logic to detect when SupportsRoslynComponentVersioning is not available, and use the lowest analyzer available.

* Handle non-SDK projects by running after ResolveNuGetPackageAssets

* Respond to PR feedback

- Name .cs and .csproj files with Roslyn in the name
- Upgrade to Roslyn 3.11 so IsExplicitlyNamedTupleElement API is available
- Fix some references to the test projects
- Fix incremental pack of the analyzer targets
55 files changed:
eng/MultiTargetRoslynComponent.targets.template [new file with mode: 0644]
eng/Versions.props
eng/packaging.targets
src/libraries/Common/tests/SourceGenerators/RoslynTestUtils.cs
src/libraries/Directory.Build.targets
src/libraries/Microsoft.Extensions.Caching.Memory/Microsoft.Extensions.Caching.Memory.sln
src/libraries/Microsoft.Extensions.Configuration.Json/Microsoft.Extensions.Configuration.Json.sln
src/libraries/Microsoft.Extensions.Configuration.UserSecrets/Microsoft.Extensions.Configuration.UserSecrets.sln
src/libraries/Microsoft.Extensions.Configuration/Microsoft.Extensions.Configuration.sln
src/libraries/Microsoft.Extensions.DependencyModel/Microsoft.Extensions.DependencyModel.sln
src/libraries/Microsoft.Extensions.Hosting.Systemd/Microsoft.Extensions.Hosting.Systemd.sln
src/libraries/Microsoft.Extensions.Hosting.WindowsServices/Microsoft.Extensions.Hosting.WindowsServices.sln
src/libraries/Microsoft.Extensions.Hosting/Microsoft.Extensions.Hosting.sln
src/libraries/Microsoft.Extensions.Http/Microsoft.Extensions.Http.sln
src/libraries/Microsoft.Extensions.Logging.Abstractions/Microsoft.Extensions.Logging.Abstractions.sln
src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Roslyn3.11.cs [new file with mode: 0644]
src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.Roslyn4.0.cs [moved from src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/LoggerMessageGenerator.cs with 94% similarity]
src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.Roslyn3.11.csproj [new file with mode: 0644]
src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.Roslyn4.0.csproj [new file with mode: 0644]
src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.targets [moved from src/libraries/Microsoft.Extensions.Logging.Abstractions/gen/Microsoft.Extensions.Logging.Generators.csproj with 65% similarity]
src/libraries/Microsoft.Extensions.Logging.Abstractions/src/Microsoft.Extensions.Logging.Abstractions.csproj
src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/Microsoft.Extensions.Logging.Generators.Roslyn3.11.Tests.csproj [new file with mode: 0644]
src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/Microsoft.Extensions.Logging.Generators.Roslyn4.0.Tests.csproj [new file with mode: 0644]
src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/Microsoft.Extensions.Logging.Generators.targets [moved from src/libraries/Microsoft.Extensions.Logging.Abstractions/tests/Microsoft.Extensions.Logging.Generators.Tests/Microsoft.Extensions.Logging.Generators.Tests.csproj with 83% similarity]
src/libraries/Microsoft.Extensions.Logging.Configuration/Microsoft.Extensions.Logging.Configuration.sln
src/libraries/Microsoft.Extensions.Logging.Console/Microsoft.Extensions.Logging.Console.sln
src/libraries/Microsoft.Extensions.Logging.Debug/Microsoft.Extensions.Logging.Debug.sln
src/libraries/Microsoft.Extensions.Logging.EventLog/Microsoft.Extensions.Logging.EventLog.sln
src/libraries/Microsoft.Extensions.Logging.EventSource/Microsoft.Extensions.Logging.EventSource.sln
src/libraries/Microsoft.Extensions.Logging.TraceSource/Microsoft.Extensions.Logging.TraceSource.sln
src/libraries/Microsoft.Extensions.Logging/Microsoft.Extensions.Logging.sln
src/libraries/Microsoft.Extensions.Options/Microsoft.Extensions.Options.sln
src/libraries/Microsoft.Internal.Runtime.AspNetCore.Transport/src/Microsoft.Internal.Runtime.AspNetCore.Transport.proj
src/libraries/System.Memory.Data/System.Memory.Data.sln
src/libraries/System.Net.Http.Json/System.Net.Http.Json.sln
src/libraries/System.Net.Http.Json/tests/FunctionalTests/System.Net.Http.Json.Functional.Tests.csproj
src/libraries/System.Net.Http.WinHttpHandler/System.Net.Http.WinHttpHandler.sln
src/libraries/System.Text.Json/System.Text.Json.sln
src/libraries/System.Text.Json/gen/JsonSourceGenerator.Emitter.cs
src/libraries/System.Text.Json/gen/JsonSourceGenerator.Parser.cs
src/libraries/System.Text.Json/gen/JsonSourceGenerator.Roslyn3.11.cs [new file with mode: 0644]
src/libraries/System.Text.Json/gen/JsonSourceGenerator.Roslyn4.0.cs [moved from src/libraries/System.Text.Json/gen/JsonSourceGenerator.cs with 77% similarity]
src/libraries/System.Text.Json/gen/System.Text.Json.SourceGeneration.Roslyn3.11.csproj [new file with mode: 0644]
src/libraries/System.Text.Json/gen/System.Text.Json.SourceGeneration.Roslyn4.0.csproj [new file with mode: 0644]
src/libraries/System.Text.Json/gen/System.Text.Json.SourceGeneration.targets [moved from src/libraries/System.Text.Json/gen/System.Text.Json.SourceGeneration.csproj with 92% similarity]
src/libraries/System.Text.Json/src/System.Text.Json.csproj
src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/System.Text.Json.SourceGeneration.Roslyn3.11.Tests.csproj [new file with mode: 0644]
src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/System.Text.Json.SourceGeneration.Roslyn4.0.Tests.csproj [new file with mode: 0644]
src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/System.Text.Json.SourceGeneration.Tests.targets [moved from src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/System.Text.Json.SourceGeneration.Tests.csproj with 98% similarity]
src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/CompilationHelper.cs
src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/System.Text.Json.SourceGeneration.Roslyn3.11.Unit.Tests.csproj [new file with mode: 0644]
src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/System.Text.Json.SourceGeneration.Roslyn4.0.Unit.Tests.csproj [new file with mode: 0644]
src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/System.Text.Json.SourceGeneration.Unit.Tests.targets [moved from src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Unit.Tests/System.Text.Json.SourceGeneration.Unit.Tests.csproj with 83% similarity]
src/libraries/System.Text.Json/tests/System.Text.Json.Tests/System.Text.Json.Tests.csproj
src/libraries/tests.proj