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 @@
-