Skip to content

Release tooling: portable PDBs for symbols + publish PolicyTool before packing Policy #249

Description

@condron

Two release-process bugs surfaced while cutting 0.15.2 (both trace to the #237 packaging work). 0.15.2 itself shipped fine after manual workarounds; these are so the next release doesn't need them.

1. Symbol packages rejected — non-portable PDBs

nuget.org rejected all three .snupkg uploads: "The uploaded symbols package contains one or more pdbs that are not portable."

Cause: src/build.props:32 sets <DebugType>full</DebugType>, which emits full/Windows PDBs (magic Micr…, not portable BSJB). nuget's symbol server only accepts portable PDBs.

Fix: <DebugType>portable</DebugType> in build.props. (Also reconsider bundling .pdb into lib/ in the nuspecs — with portable symbols the .snupkg is the right delivery; pdbs-in-lib is redundant.)

Note: 0.15.2's main packages are already published and usable (pdbs are bundled in lib/), so symbols for 0.15.2 are simply skipped — re-uploading isn't viable because a rebuild changes the DLL debug signatures.

2. Policy pack fails — PolicyTool not published to bld/tools

CreateNuget.ps1 packing ReactiveDomain.Policy.nuspec failed: "Could not find a part of the path '…\bld\tools\net8.0'."

Cause: the Policy nuspec (added in #237) bundles the PolicyTool exe from ..\bld\tools\{tfm}\ReactiveDomain.PolicyTool.exe (+ es_settings.json), which comes from publishing PolicyTool via its FolderProfile.pubxml (PublishDir=..\..\bld\tools\$(TargetFramework)). Neither CreateNuget.ps1 nor the documented dotnet msbuild …sln -c Release runs that publish, so bld/tools/ never exists and Policy fails to pack every release.

Fix: add the PolicyTool publish to the release step (in CreateNuget.ps1 before packing, or the documented build sequence). The commands used tonight:

dotnet publish src/ReactiveDomain.PolicyTool/ReactiveDomain.PolicyTool.csproj -c Release -f net8.0  -p:PublishProfile=FolderProfile
dotnet publish src/ReactiveDomain.PolicyTool/ReactiveDomain.PolicyTool.csproj -c Release -f net10.0 -p:PublishProfile=FolderProfile

Related

Also on 0.15.3: #247 (CheckAssemblyVersion parse broke on the nuget list deprecation warning) and #248 (Foundation.Tests timing flakes). These three are the "make the release repeatable" set.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions