Carubbi.WindowsAppHelper
2.0.0
dotnet add package Carubbi.WindowsAppHelper --version 2.0.0
NuGet\Install-Package Carubbi.WindowsAppHelper -Version 2.0.0
<PackageReference Include="Carubbi.WindowsAppHelper" Version="2.0.0" />
<PackageVersion Include="Carubbi.WindowsAppHelper" Version="2.0.0" />
<PackageReference Include="Carubbi.WindowsAppHelper" />
paket add Carubbi.WindowsAppHelper --version 2.0.0
#r "nuget: Carubbi.WindowsAppHelper, 2.0.0"
#:package Carubbi.WindowsAppHelper@2.0.0
#addin nuget:?package=Carubbi.WindowsAppHelper&version=2.0.0
#tool nuget:?package=Carubbi.WindowsAppHelper&version=2.0.0
Carubbi.WindowsAppHelper
Extended UI Controls Library for Windows Forms (.NET 10). A set of reusable WinForms controls and helpers for building polished desktop apps.
Architecture
Single class library plus a test project. Not a Clean Architecture multi-layer solution — this is a reusable control library distributed as a NuGet package.
| Project | Layer | Purpose |
|---|---|---|
Carubbi.WindowsAppHelper |
Library | WinForms controls + helpers |
Carubbi.WindowsAppHelper.Tests |
Tests | TUnit unit tests for masks, extensions and background worker |
┌──────────────────────────────┐
│ Consumer WinForms apps │
└──────────────┬───────────────┘
│ NuGet: Carubbi.WindowsAppHelper
┌──────────────▼───────────────┐
│ Carubbi.WindowsAppHelper │ controls + helpers
└──────────────┬───────────────┘
│
┌──────────────▼───────────────┐
│ Carubbi.WindowsAppHelper.Tests
└──────────────────────────────┘
Control and helper surface
| Type | Kind | Purpose |
|---|---|---|
ComboBoxTree |
Control | Combo box backed by a TreeView; configurable separator, leaf-only selection, auto-sizing drop-down |
ExtendedDateTimePicker |
Control | DateTimePicker with custom-colourable background and drop-down/calendar icon button |
ToolstripCheckbox |
ToolStrip item | Checkbox customized for placement on a ToolStrip |
ToolstripDefaultTextBox |
ToolStrip item | Default text box customized for placement on a ToolStrip (supports password mask char) |
CustomComboBoxRenderer |
Static renderer | Visual-styles rendering helpers for ComboBox-style controls (text box + drop-down button) |
AbortableBackgroundWorker |
Helper | BackgroundWorker with cooperative cancellation via CancellationToken |
ControlExtensions |
Helper | Extension methods for the Control class |
MaskHelper |
Helper | Input mask algorithms (numeric mask with modifier/navigation key handling) |
User32Facade |
Helper | Thin facade over native User32.dll functions (window/desktop interop) |
Projects
Carubbi.WindowsAppHelper
Windows Forms class library distributed as a NuGet package (Carubbi.WindowsAppHelper 2.0.0).
| Aspect | Detail |
|---|---|
| Framework | net10.0-windows |
| Output type | Library |
| LangVersion | latest |
| Package tags | WinForms;UI;Controls;TreeView;DateTimePicker;ToolStrip |
| NuGet packages | SonarAnalyzer.CSharp (analyzer, private) |
Package metadata: MIT license, symbol package (snupkg) published alongside, README.md packed into the NuGet package.
Carubbi.WindowsAppHelper.Tests
| Aspect | Detail |
|---|---|
| Framework | net10.0-windows |
| Runner | Microsoft.Testing.Platform (MTP) — run via dotnet run, not dotnet test (VSTest is unsupported for MTP/TUnit on .NET 10) |
| Test framework | TUnit |
| Mocking | NSubstitute |
Test coverage focuses on pure logic — masks, control extensions, cooperative cancellation — plus STA smoke tests that construct every control to verify they build and dispose cleanly. Rendering-paint paths (User32/CustomComboBoxRenderer) are not unit-tested by design.
Getting Started
Prerequisites
- .NET 10 SDK (
net10.0-windows+ WinForms) - Windows (controls require WinForms;
EnableWindowsTargetingis set so the library can be built on non-Windows CI runners)
Build
dotnet restore
dotnet build Carubbi.WindowsAppHelper.slnx -c Release
Test (MTP runner)
dotnet run --project Carubbi.WindowsAppHelper.Tests/Carubbi.WindowsAppHelper.Tests.csproj -c Release
Coverage
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/run-coverage.ps1
Produces a Cobertura report under TestResults/coverage/.
Build the NuGet package
dotnet pack Carubbi.WindowsAppHelper/Carubbi.WindowsAppHelper.csproj -c Release -o out
CI/CD
GitHub Actions workflows under .github/workflows/:
| Workflow | Trigger | Stages |
|---|---|---|
ci.yml |
push master, pull requests |
Build (Release) → Test (MTP) → SonarQube scan (conditional on SONAR_TOKEN) |
publish.yml |
push v* tag, manual dispatch |
Build → Test → Pack → NuGet trusted publishing |
- CI validation is enforced by TreatWarningsAsErrors (SonarAnalyzer runs as an error-level analyzer).
- Test step uses the MTP runner (
dotnet run --project ...) becausedotnet test(VSTest) fails for TUnit/MTP projects on .NET 10. - SonarQube job runs only when the
SONAR_TOKENrepo secret exists; config insonar-project.properties(project keyrcarubbi_Carubbi.WindowsAppHelper, orgrcarubbi). - Publishing uses trusted publishing: the
nuget/login@v1action (accountrcarubbi) must be linked to the repository's environment via NuGet.org; theproductionGitHub environment holds the required configuration.
Release flow
git tag v2.0.0(or bumpVersionin the csproj first)git push --tagspublishworkflow packs and pushes to NuGet.org (--skip-duplicate)
Key NuGet Packages
| Package | Project(s) | Use |
|---|---|---|
TUnit |
Tests | Test framework on the Microsoft.Testing.Platform runner |
NSubstitute |
Tests | Mocking framework |
SonarAnalyzer.CSharp |
Library (analyzer) | Static analysis; runs as errors via TreatWarningsAsErrors |
Versions are pinned centrally in Directory.Packages.props (Central Package Management).
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0-windows7.0 is compatible. |
-
net10.0-windows7.0
- No dependencies.
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Carubbi.WindowsAppHelper:
| Package | Downloads |
|---|---|
|
Carubbi.ObjectXMFDisplay
Simulador de Emulador de Terminal Mainframe baseado na interface do Microfocus Rumba |
|
|
Carubbi.Web.Utils
Web automation utilities for WebView2: DOM manipulation, dialog monitoring, screenshots and MIME conversion |
|
|
Carubbi.ExtendedWebBrowser
Multi-tab web browser control for web automation on Microsoft Edge WebView2 (WinForms) |
GitHub repositories
This package is not used by any popular GitHub repositories.