Commit 27c74da
committed
feat: Phase 5.5 wire meta-package to ship the analyzer as a dev-only NuGet
Pre-5.5 the Testably.Abstractions.Migration nupkg was a 7K placeholder DLL
with no analyzer payload — installing it did nothing.
Source/Testably.Abstractions.Migration/Testably.Abstractions.Migration.csproj
now packs both analyzer DLLs into `analyzers/dotnet/cs/` so Roslyn auto-
discovers them on install. Wiring uses ProjectReference with
`ReferenceOutputAssembly="false" PrivateAssets="all"` to force the analyzer
projects to build first without leaking their assemblies into lib/.
Property envelope alignment via `SetTargetFramework="TargetFramework=netstandard2.0"`
matches the test / playground projects' references. MSBuild's project graph
keys nodes by the property envelope, so without the matching
SetTargetFramework the meta-package's references would create a second
graph node for each analyzer project — and on parallel CI builds both
nodes race on the analyzer's deps.json, failing GenerateDepsFile with a
"file in use" IOException.
Marked as a dev-only tool via `DevelopmentDependency=true` so NuGet does not
propagate the package as a transitive dependency of consumers (auto-applies
PrivateAssets=all on the consumer side). The empty placeholder lib DLL is
intentionally retained: it satisfies NuGet's NU5017 ("no content") check
which is elevated to an error by `TreatWarningsAsErrors=true` and would
otherwise fail the CI build when the only payload is an analyzer.
The package intentionally does NOT add a PackageReference to
Testably.Abstractions.Testing. The migration package is a one-shot tool
(install → migrate → uninstall); pulling the target lib transitively
would mask the missing reference until the user removes the migration
package, at which point the migrated tests would stop compiling. Consumers
must reference Testably.Abstractions.Testing themselves.
Analyzer DLL paths use $(TargetFramework) so packaging tracks the central
TFM (Source/Directory.Build.props), and PackagePath uses a trailing slash
to match sibling Pack metadata in the codebase. Build still requires going
through the .slnx so $(SolutionDir) resolves for the README pack target.1 parent 570cabe commit 27c74da
1 file changed
Lines changed: 43 additions & 0 deletions
Lines changed: 43 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
5 | 16 | | |
6 | 17 | | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
7 | 50 | | |
0 commit comments