Skip to content

fix(build): reference RMC.Numerics NuGet package instead of sibling c…#22

Merged
HadenSmith merged 2 commits into
mainfrom
fix/numerics-nuget
May 4, 2026
Merged

fix(build): reference RMC.Numerics NuGet package instead of sibling c…#22
HadenSmith merged 2 commits into
mainfrom
fix/numerics-nuget

Conversation

@HadenSmith

Copy link
Copy Markdown
Contributor

Summary

  • CI was failing with ~120 CS0246 errors (missing Numerics, SortOrder, OrderedPairedData, TimeSeries, UnivariateDistributionBase, MathFunctionType, etc. types) because seven .csproj files referenced Numerics.dll via a HintPath pointing at a sibling numerics checkout that only exists on the maintainer's machine.
  • Swap those references to the public RMC.Numerics 2.0.1 NuGet package, which exposes the same Numerics namespace used throughout the codebase.
  • Same fix incidentally corrects two projects (DatabaseControls, NumericControls) that had hardcoded the Debug configuration path under HintPath and would have silently picked up the wrong binary in Release.

Projects updated:

  • src/DatabaseControls/DatabaseControls.csproj
  • src/DatabaseControls.Demo/DatabaseControls.Demo.csproj
  • src/FrameworkUI.Demo/FrameworkUI.Demo.csproj
  • src/NumericControls/NumericControls.csproj
  • src/NumericControls.Demo/NumericControls.Demo.csproj
  • src/OxyPlotControls.Demo/OxyPlotControls.Demo.csproj
  • tests/NumericControls.Tests/NumericControls.Tests.csproj

Diff: 7 files changed, 7 insertions(+), 21 deletions(-).

Test plan

  • dotnet restore WPF-Framework.sln succeeds without any sibling numerics directory present
  • dotnet build WPF-Framework.sln -c Release --no-restore succeeds with 0 errors, 0 warnings
  • dotnet test WPF-Framework.sln -c Release --no-build produces 6722 passed, 6 skipped, 0 failed (matches pre-change baseline)
  • CI (Integration workflow) passes on this PR

…heckout

The HintPath reference to ..\..\..\numerics\Numerics\bin\...\Numerics.dll
assumed a sibling Numerics repo was checked out next to wpf-framework.
This worked locally but broke CI and any clean checkout because the
referenced DLL does not exist on a standalone machine, producing ~120
CS0246 errors about missing Numerics / SortOrder / OrderedPairedData /
TimeSeries / UnivariateDistributionBase / etc. types.

Switch to the public RMC.Numerics 2.0.1 NuGet package, which exposes
the same Numerics namespace and types the consuming projects use. All
references updated in seven projects:

  src/DatabaseControls
  src/DatabaseControls.Demo
  src/FrameworkUI.Demo
  src/NumericControls
  src/NumericControls.Demo
  src/OxyPlotControls.Demo
  tests/NumericControls.Tests

Two of the seven (DatabaseControls, NumericControls) had also hardcoded
the Debug configuration path, which would have silently picked up the
wrong binary under Release builds. Fixed incidentally by the swap.

Verification: dotnet restore / build -c Release / test -c Release all
pass locally with 0 errors, 0 warnings, and 6722 passed / 6 skipped / 0
failed tests \u2014 matching the pre-change baseline.
Clean up the Integration workflow on a fresh checkout so CI reports 0
errors, 0 warnings, and 0 test failures \u2014 required for public 1.0.0
release.

FrameworkUI XML/nullability bugs (real code errors):
  - ShellPublicVariables.cs: rewrite malformed remarks block (unclosed
    para, wrong nesting) as valid XML
  - Project Explorer/View Models/Node.cs: close </summary> tag
  - Project Explorer/Views/NodeHeader.xaml.cs: remove duplicate </para>
  - Main Window/MainWindow.xaml.cs: pass 'this' instead of null to
    BasicMessageItem's non-nullable 'source' parameter
  - Utilities/UtilityFunctions.cs: remove <typeparam name="T"> on a
    non-generic method
  - Project Explorer/View Models/ProjectNode.cs: remove orphan XML doc
    comments above commented-out methods

OxyPlot fork CS0618 obsolete-API warnings (~145 suppressed at project
level): upstream OxyPlot's own deprecation warnings about Model.MouseDown
/ Element.MouseDown scheduled for v4.0 removal, internal to the fork's
code. Not first-party code; suppressing at the vendored-project boundary
does not hide legitimate CS0618 elsewhere.

  - OxyPlot.Wpf.csproj: add CS0618 to NoWarn
  - OxyPlot.Wpf.Shared.csproj: add CS0618 to NoWarn
  - OxyPlotControls.csproj: append CS0618 to existing NoWarn list
  - OxyPlot.ExampleLibrary.csproj: add CS0618 to NoWarn
  (OxyPlot.csproj already had CS0618)

Test helper CS0067 (unused event): move the existing #pragma warning
disable CS0067 to cover ElementIsDirtyChanged too (mock implementation
satisfying IElementCollection interface contract).

OxyPlot.Tests baseline SVGs (18 CI failures): OxyAssert.AreEqual
compares rendered plot SVGs against baselines stored under baseline/
in the current working directory. Previously baselines were generated
on first local run and never committed, so CI (which had no prior run)
failed every AxisTests baseline check with "Baseline file does not
exist. A new baseline has been created \u2014 rerun the test."

Now: 18 AxisTests baseline SVGs checked in under tests/OxyPlot.Tests/
baseline/ and deployed to the test output via <Content Include> with
CopyToOutputDirectory=PreserveNewest. OxyAssert.cs is unchanged \u2014 its
hardcoded baseline\ path resolves to the copied-to-output files. A
fresh CI checkout now finds all baselines and compares successfully.

OxyPlotControls DPI test: SavePlotImageDialog's initial Width/Height are
computed from SystemParameters.WorkArea, which varies by display/DPI and
between interactive and headless (CI) environments. Replace exact
Assert.Equal(636, dialog.Width) with tolerant Assert.InRange bounded by
the dialog's own MinWidth/MinHeight and a reasonable upper limit.

Verification: dotnet build/test -c Release locally after cleaning bin/
and obj/ for OxyPlot.Tests: 0 errors, 0 warnings, 6722 passed / 6
skipped / 0 failed.
@HadenSmith HadenSmith merged commit 30b56b4 into main May 4, 2026
1 check passed
@HadenSmith HadenSmith deleted the fix/numerics-nuget branch June 30, 2026 18:18
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