diff --git a/docs/wiki/Packaging.md b/docs/wiki/Packaging.md index 98f6a82..466c22b 100644 --- a/docs/wiki/Packaging.md +++ b/docs/wiki/Packaging.md @@ -11,21 +11,28 @@ analyzer assemblies and their runtime dependencies. The bundled projects are: - `SourceGeneratorFramework.Generators` — `AttributeDataModelGenerator`, `TypeLibraryGenerator`; - `SourceGeneratorFramework.Analyzers` — the `PSGFR*` and `TLB*` analyzers; -- `SourceGeneratorFramework.CodeFixers` — the code fix providers; -- `SourceGeneratorShared` — shared models and helpers, packed into the package as - `Purview.SourceGeneratorFramework.Shared.dll`. +- `SourceGeneratorFramework.CodeFixers` — the code fix providers. + +The shared models and helpers that used to ship as a separate +`Purview.SourceGeneratorFramework.Shared.dll` are compiled directly into the framework assembly +(`SourceGeneratorFramework` links the `SourceGeneratorShared` sources via +`SourceGeneratorShared.Link.targets`). Consumers therefore receive a single +`Purview.SourceGeneratorFramework.dll`, which removes the version-skew hazard that a separately +bundled Shared assembly caused: generator packages that loaded a different Shared version in-process +failed with binary-incompatibility errors (e.g. removed `PurviewTypeLibrary` fields). These projects are `IsRoslynComponent = true` and are **not** packable on their own; they are packed -into the main package by the `SourceGeneratorFramework` project via analyzer project references -(`OutputItemType="Analyzer"`). +into the main package by the `SourceGeneratorFramework` project. They were previously consumed as +analyzer project references, but since they now reference the framework assembly for the shared types +(which would form a project-reference cycle), the `SourceGeneratorFramework` project builds them via +`GetSourceGeneratorAnalyzerFiles` and packs them under `analyzers/dotnet/cs/` in +`BuildAndPackBundledAnalyzerAssemblies`. The repo's pack validation (`purview-build.json`) requires the `purview.sourcegeneratorframework` package to contain, at minimum: -- `lib/netstandard2.0/Purview.SourceGeneratorFramework.dll` and - `lib/netstandard2.0/Purview.SourceGeneratorFramework.Shared.dll`; -- `analyzers/dotnet/cs/` versions of the framework, generators, analyzers, code fixers, and shared - assemblies; +- `lib/netstandard2.0/Purview.SourceGeneratorFramework.dll`; +- `analyzers/dotnet/cs/` versions of the framework, generators, analyzers, and code fixers; - `build/Purview.SourceGeneratorFramework.props` and `build/Purview.SourceGeneratorFramework.targets`; - `README.md`, `LICENSE.md`, and `purview-logo-light.png`. diff --git a/package.json b/package.json index 0ce81b9..17c38cd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "purview-sourcegenerator-framework", - "version": "1.0.0-prerelease.46", + "version": "1.0.0-prerelease.47", "license": "MIT", "author": { "name": "Kieron Lanning", diff --git a/purview-build.json b/purview-build.json index f8278a0..374e2fd 100644 --- a/purview-build.json +++ b/purview-build.json @@ -11,12 +11,10 @@ "RequiredContent": { "purview.sourcegeneratorframework": [ "lib/netstandard2.0/Purview.SourceGeneratorFramework.dll", - "lib/netstandard2.0/Purview.SourceGeneratorFramework.Shared.dll", "analyzers/dotnet/cs/Purview.SourceGeneratorFramework.dll", "analyzers/dotnet/cs/Purview.SourceGeneratorFramework.Generators.dll", "analyzers/dotnet/cs/Purview.SourceGeneratorFramework.Analyzers.dll", "analyzers/dotnet/cs/Purview.SourceGeneratorFramework.CodeFixers.dll", - "analyzers/dotnet/cs/Purview.SourceGeneratorFramework.Shared.dll", "build/Purview.SourceGeneratorFramework.props", "build/Purview.SourceGeneratorFramework.targets", "README.md", @@ -25,7 +23,6 @@ ], "purview.sourcegeneratorframework.testing": [ "lib/netstandard2.0/Purview.SourceGeneratorFramework.Testing.dll", - "lib/netstandard2.0/Purview.SourceGeneratorFramework.Shared.dll", "build/Purview.SourceGeneratorFramework.Testing.props", "README.md", "LICENSE.md", @@ -33,7 +30,6 @@ ], "purview.sourcegeneratorframework.testing.tunit": [ "lib/netstandard2.0/Purview.SourceGeneratorFramework.Testing.TUnit.dll", - "lib/netstandard2.0/Purview.SourceGeneratorFramework.Shared.dll", "build/Purview.SourceGeneratorFramework.Testing.TUnit.props", "README.md", "LICENSE.md", diff --git a/src/SourceGeneratorFramework.slnx b/src/SourceGeneratorFramework.slnx index 64baabb..5a96ecf 100644 --- a/src/SourceGeneratorFramework.slnx +++ b/src/SourceGeneratorFramework.slnx @@ -19,7 +19,6 @@ - diff --git a/src/src/SourceGeneratorFramework.Analyzers/SourceGeneratorFramework.Analyzers.csproj b/src/src/SourceGeneratorFramework.Analyzers/SourceGeneratorFramework.Analyzers.csproj index 02c7f44..02a0e3e 100644 --- a/src/src/SourceGeneratorFramework.Analyzers/SourceGeneratorFramework.Analyzers.csproj +++ b/src/src/SourceGeneratorFramework.Analyzers/SourceGeneratorFramework.Analyzers.csproj @@ -3,15 +3,16 @@ true $(NoWarn);RS2002;RS2003;RS2005; - + @@ -24,29 +25,16 @@ %(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension) - - - $(MSBuildThisFileDirectory)..\SourceGeneratorShared\bin\$(Configuration)\netstandard2.0\Purview.SourceGeneratorFramework.Shared.dll - - - - - diff --git a/src/src/SourceGeneratorFramework.Benchmarks/SourceGeneratorFramework.Benchmarks.csproj b/src/src/SourceGeneratorFramework.Benchmarks/SourceGeneratorFramework.Benchmarks.csproj index a74160b..2a740f3 100644 --- a/src/src/SourceGeneratorFramework.Benchmarks/SourceGeneratorFramework.Benchmarks.csproj +++ b/src/src/SourceGeneratorFramework.Benchmarks/SourceGeneratorFramework.Benchmarks.csproj @@ -9,7 +9,6 @@ - diff --git a/src/src/SourceGeneratorFramework.CodeFixers/SourceGeneratorFramework.CodeFixers.csproj b/src/src/SourceGeneratorFramework.CodeFixers/SourceGeneratorFramework.CodeFixers.csproj index ddc056a..783cf55 100644 --- a/src/src/SourceGeneratorFramework.CodeFixers/SourceGeneratorFramework.CodeFixers.csproj +++ b/src/src/SourceGeneratorFramework.CodeFixers/SourceGeneratorFramework.CodeFixers.csproj @@ -4,7 +4,7 @@ - + @@ -15,29 +15,16 @@ %(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension) - - - $(MSBuildThisFileDirectory)..\SourceGeneratorShared\bin\$(Configuration)\netstandard2.0\Purview.SourceGeneratorFramework.Shared.dll - - - - - diff --git a/src/src/SourceGeneratorFramework.ExampleGenerator/SourceGeneratorFramework.ExampleGenerator.csproj b/src/src/SourceGeneratorFramework.ExampleGenerator/SourceGeneratorFramework.ExampleGenerator.csproj index 750485e..7bf7dc3 100644 --- a/src/src/SourceGeneratorFramework.ExampleGenerator/SourceGeneratorFramework.ExampleGenerator.csproj +++ b/src/src/SourceGeneratorFramework.ExampleGenerator/SourceGeneratorFramework.ExampleGenerator.csproj @@ -13,7 +13,6 @@ --> - - + @@ -13,29 +13,16 @@ %(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension) - - - $(MSBuildThisFileDirectory)..\SourceGeneratorShared\bin\$(Configuration)\netstandard2.0\Purview.SourceGeneratorFramework.Shared.dll - - - - - diff --git a/src/src/SourceGeneratorFramework.Testing.TUnit/SourceGeneratorFramework.Testing.TUnit.csproj b/src/src/SourceGeneratorFramework.Testing.TUnit/SourceGeneratorFramework.Testing.TUnit.csproj index 8763f44..e7e8414 100644 --- a/src/src/SourceGeneratorFramework.Testing.TUnit/SourceGeneratorFramework.Testing.TUnit.csproj +++ b/src/src/SourceGeneratorFramework.Testing.TUnit/SourceGeneratorFramework.Testing.TUnit.csproj @@ -1,7 +1,5 @@  - $(TargetsForTfmSpecificContentInPackage);IncludeSourceGeneratorShared - $(TargetsForTfmSpecificDebugSymbolsInPackage);IncludeSourceGeneratorSharedSymbols netstandard2.0;$(TestingTargetFrameworks) true $(RootNamespace) @@ -9,17 +7,10 @@ - - - diff --git a/src/src/SourceGeneratorFramework.Testing/SourceGeneratorFramework.Testing.csproj b/src/src/SourceGeneratorFramework.Testing/SourceGeneratorFramework.Testing.csproj index 723a102..b541d82 100644 --- a/src/src/SourceGeneratorFramework.Testing/SourceGeneratorFramework.Testing.csproj +++ b/src/src/SourceGeneratorFramework.Testing/SourceGeneratorFramework.Testing.csproj @@ -1,7 +1,5 @@  - $(TargetsForTfmSpecificContentInPackage);IncludeSourceGeneratorShared - $(TargetsForTfmSpecificDebugSymbolsInPackage);IncludeSourceGeneratorSharedSymbols netstandard2.0;$(TestingTargetFrameworks) true @@ -10,11 +8,6 @@ - @@ -22,6 +15,4 @@ - - diff --git a/src/src/SourceGeneratorFramework/Sdk/build/Purview.SourceGeneratorFramework.targets b/src/src/SourceGeneratorFramework/Sdk/build/Purview.SourceGeneratorFramework.targets index ec6b5e8..8d53352 100644 --- a/src/src/SourceGeneratorFramework/Sdk/build/Purview.SourceGeneratorFramework.targets +++ b/src/src/SourceGeneratorFramework/Sdk/build/Purview.SourceGeneratorFramework.targets @@ -2,11 +2,6 @@ <_PurviewSourceGeneratorFrameworkAssembly Condition="'$(_PurviewSourceGeneratorFrameworkAssembly)' == ''" >$(MSBuildThisFileDirectory)..\lib\netstandard2.0\Purview.SourceGeneratorFramework.dll - <_PurviewSourceGeneratorFrameworkSharedAssembly - Condition="'$(_PurviewSourceGeneratorFrameworkSharedAssembly)' == ''" - >$(MSBuildThisFileDirectory)..\lib\netstandard2.0\Purview.SourceGeneratorFramework.Shared.dll - <_PurviewSourceGeneratorFrameworkSharedPdb>$([System.IO.Path]::ChangeExtension('$(_PurviewSourceGeneratorFrameworkSharedAssembly)', '.pdb')) - <_PurviewSourceGeneratorFrameworkSharedXml>$([System.IO.Path]::ChangeExtension('$(_PurviewSourceGeneratorFrameworkSharedAssembly)', '.xml')) Purview.SourceGeneratorFramework.dll - - Purview.SourceGeneratorFramework.Shared.dll - - - <_PurviewSourceGeneratorFrameworkRuntimeSidecar - Include="$(_PurviewSourceGeneratorFrameworkSharedPdb)" - Condition="Exists('$(_PurviewSourceGeneratorFrameworkSharedPdb)')" - /> - <_PurviewSourceGeneratorFrameworkRuntimeSidecar - Include="$(_PurviewSourceGeneratorFrameworkSharedXml)" - Condition="Exists('$(_PurviewSourceGeneratorFrameworkSharedXml)')" - /> - - - diff --git a/src/src/SourceGeneratorFramework/SourceGeneratorFramework.csproj b/src/src/SourceGeneratorFramework/SourceGeneratorFramework.csproj index 5575ba4..9bbbab6 100644 --- a/src/src/SourceGeneratorFramework/SourceGeneratorFramework.csproj +++ b/src/src/SourceGeneratorFramework/SourceGeneratorFramework.csproj @@ -15,40 +15,52 @@ false - $(TargetsForTfmSpecificContentInPackage);IncludeSourceGeneratorShared - $(TargetsForTfmSpecificDebugSymbolsInPackage);IncludeSourceGeneratorSharedSymbols + $(TargetsForTfmSpecificContentInPackage);BuildAndPackBundledAnalyzerAssemblies - - - - + + - - + + + - + + + + + + + + + + + analyzers/dotnet/cs/ + + + diff --git a/src/src/SourceGeneratorShared/Properties/AssemblyInfo.cs b/src/src/SourceGeneratorShared/Properties/AssemblyInfo.cs deleted file mode 100644 index c8024b2..0000000 --- a/src/src/SourceGeneratorShared/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,5 +0,0 @@ -using System.Runtime.CompilerServices; - -[assembly: InternalsVisibleTo("Purview.SourceGeneratorFramework")] -[assembly: InternalsVisibleTo("Purview.SourceGeneratorFramework.Generators")] -[assembly: InternalsVisibleTo("Purview.SourceGeneratorFramework.SourceGeneratorShared.UnitTests")] diff --git a/src/src/SourceGeneratorShared/SourceGeneratorShared.Link.targets b/src/src/SourceGeneratorShared/SourceGeneratorShared.Link.targets new file mode 100644 index 0000000..a92b6ca --- /dev/null +++ b/src/src/SourceGeneratorShared/SourceGeneratorShared.Link.targets @@ -0,0 +1,24 @@ + + + + + + diff --git a/src/src/SourceGeneratorShared/SourceGeneratorShared.Pack.targets b/src/src/SourceGeneratorShared/SourceGeneratorShared.Pack.targets deleted file mode 100644 index 253c33c..0000000 --- a/src/src/SourceGeneratorShared/SourceGeneratorShared.Pack.targets +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - <_SourceGeneratorSharedPackageFile Include="@(_SourceGeneratorSharedAssembly)" /> - <_SourceGeneratorSharedPackageFile Include="@(_SourceGeneratorSharedAssembly->'%(RootDir)%(Directory)%(Filename).xml')" /> - - - lib/$(TargetFramework)/ - - - - - - - - - - - - <_SourceGeneratorSharedSymbolFile Include="@(_SourceGeneratorSharedAssembly->'%(RootDir)%(Directory)%(Filename).pdb')" /> - - - $(TargetFramework) - - - - diff --git a/src/src/SourceGeneratorShared/SourceGeneratorShared.csproj b/src/src/SourceGeneratorShared/SourceGeneratorShared.csproj deleted file mode 100644 index a1722f9..0000000 --- a/src/src/SourceGeneratorShared/SourceGeneratorShared.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - netstandard2.0 - true - $(NamespacePrefix).Shared - $(NamespacePrefix) - false - $(NamespacePrefix).Shared - - - - - - - diff --git a/src/tests/SharedTestingInfra/SharedTestingInfra.csproj b/src/tests/SharedTestingInfra/SharedTestingInfra.csproj index a97e7c9..b845620 100644 --- a/src/tests/SharedTestingInfra/SharedTestingInfra.csproj +++ b/src/tests/SharedTestingInfra/SharedTestingInfra.csproj @@ -1,7 +1,6 @@  -