Skip to content

Consolidate net48 into InfoBoxCore; delete legacy InfoBox.csproj#90

Open
JohannBlais wants to merge 1 commit into
masterfrom
chore/consolidate-net48-into-infoboxcore
Open

Consolidate net48 into InfoBoxCore; delete legacy InfoBox.csproj#90
JohannBlais wants to merge 1 commit into
masterfrom
chore/consolidate-net48-into-infoboxcore

Conversation

@JohannBlais

Copy link
Copy Markdown
Owner

Summary

Merges the two library projects into one. The legacy non-SDK InfoBox.csproj (net48) and the SDK-style InfoBoxCore.csproj (net8/9/10) both compiled the same shared source under InfoBox/. Now there's a single multi-targeted project.

InfoBoxCore.csproj → multi-target net48;net8.0-windows;net9.0-windows;net10.0-windows

  • net48 resources: sets GenerateResourceUsePreserializedResources=true + references System.Resources.Extensions so the embedded icon resources build under the modern SDK. This is what makes dotnet build InfoBox.sln work for the whole solution — it previously failed on the legacy project with MSB3823.
  • Signing uniformised: SignAssembly + key.snk added, so all four TFMs are now strong-name signed with the same key (token 6f5edd306b0cc770). Previously only net48 was signed and the modern DLLs shipped unsigned — now consistent (per the decision to uniformise).

InfoBox.csproj deleted

The InfoBox/ folder keeps the source, .resx, icon resources, key.snk, and InfoBox.nuspec; InfoBoxCore compiles them via the existing <Compile Include="..\InfoBox\**\*.cs" />.

Knock-on changes

  • InfoBox.Designer (old-format net48) repointed from InfoBox.csprojInfoBoxCore.csproj, consuming its net48 output via <SetTargetFramework>TargetFramework=net48</SetTargetFramework>. Its stale CodeAnalysisRuleSet=AllRules.ruleset references (unresolvable under dotnet, MSB3884) are removed — analysis is governed by EnableNETAnalyzers + .editorconfig.
  • InfoBox.nuspec: net48 lib files now come from ..\InfoBoxCore\bin\Release\net48\. All four TFMs ship dll + pdb + 7 localization satellites.
  • InfoBox.sln: InfoBox project entry removed; dead AnkhSVN SubversionScc section dropped.
  • CLAUDE.md: project-structure and build sections updated.

Verified locally

Check Result
VS MSBuild — full solution (-t:Rebuild)
dotnet build InfoBox.sln (previously failed) ✅ now builds
All 4 TFMs produce signed InfoBox.dll + pdb + 7 satellites
Signing token consistent across TFMs 6f5edd306b0cc770
dotnet test — InfoBoxCore.Tests / Designer.Tests ✅ 88 / 8

⚠️ Action needed before/after merge — Azure DevOps pipeline

The solution build is covered (net48 now comes from InfoBoxCore) and the nuspec paths are updated. But the pipeline's pack step lives in the Azure DevOps portal YAML, not in the repo, so I couldn't verify it. Please confirm the pack step still works — especially if it referenced InfoBox.csproj directly or ran nuget pack expecting InfoBox/bin/Release/. The nuspec now expects the net48 binaries at InfoBoxCore/bin/Release/net48/.

Also note nuget.exe is no longer restored as a side effect of the build (the old Nuget.CommandLine PackageReference was on InfoBox.csproj). If the pipeline relied on that, it needs its own nuget tool step.

🤖 Generated with Claude Code

The library was built from two projects: the legacy non-SDK InfoBox.csproj
(net48) and the SDK-style InfoBoxCore.csproj (net8/9/10), both compiling the
same shared source under InfoBox/. This merges them into one.

InfoBoxCore.csproj now multi-targets net48;net8.0-windows;net9.0-windows;
net10.0-windows:
- The net48 target sets GenerateResourceUsePreserializedResources=true and
  references System.Resources.Extensions so the embedded icon resources build
  under the modern SDK. This is what makes `dotnet build InfoBox.sln` work for
  the whole solution - previously it failed on the legacy project (MSB3823).
- SignAssembly + key.snk added, so ALL target frameworks are now strong-name
  signed with the same key (token 6f5edd306b0cc770). Previously only net48 was
  signed and the modern DLLs shipped unsigned - now consistent.

InfoBox.csproj is deleted. The InfoBox/ folder keeps the source, resources,
key, and nuspec; InfoBoxCore compiles them.

Knock-on changes:
- InfoBox.Designer (old-format net48) repointed from InfoBox.csproj to
  InfoBoxCore.csproj, consuming its net48 output via
  <SetTargetFramework>TargetFramework=net48</SetTargetFramework>. Its stale
  CodeAnalysisRuleSet=AllRules.ruleset references (unresolvable under dotnet,
  MSB3884) are removed - analysis is governed by EnableNETAnalyzers + .editorconfig.
- InfoBox.nuspec: the net48 lib files now come from
  ..\InfoBoxCore\bin\Release\net48\ instead of ..\InfoBox\bin\Release\.
  All four TFMs now ship dll + pdb + 7 localization satellites.
- InfoBox.sln: InfoBox project entry removed; the dead AnkhSVN SubversionScc
  section dropped.
- CLAUDE.md: project-structure and build sections updated.

Verified locally: VS MSBuild full solution, `dotnet build InfoBox.sln`
(previously failing), all 4 TFMs produce signed InfoBox.dll + satellites,
96 tests pass (InfoBoxCore.Tests 88, Designer.Tests 8).

NOTE for the Azure DevOps pipeline: confirm the pack step works post-merge.
The .sln build is covered (net48 now comes from InfoBoxCore), and the nuspec
paths are updated, but the pipeline's pack step lives in the portal YAML and
should be checked - especially if it referenced InfoBox.csproj directly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@JohannBlais

Copy link
Copy Markdown
Owner Author

Azure DevOps build #292 fully green — every task succeeded: NuGet restore, Build solution, Run unit tests, Run Code Analysis, SonarCloud.

Useful finding from the task list: the CI build pipeline has no pack step (restore → build → test → code-analysis → Sonar). So NuGet packing happens in a separate release pipeline, not in CI — the CI build is therefore unaffected by the nuspec change and is confirmed working with the consolidated structure (including NuGet restore, which no longer depends on the removed Nuget.CommandLine reference).

The note about verifying the pack/release step still applies, but it's out of the CI build path.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant