Carubbi.WindowsAppHelper 2.0.0

dotnet add package Carubbi.WindowsAppHelper --version 2.0.0
                    
NuGet\Install-Package Carubbi.WindowsAppHelper -Version 2.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Carubbi.WindowsAppHelper" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Carubbi.WindowsAppHelper" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Carubbi.WindowsAppHelper" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Carubbi.WindowsAppHelper --version 2.0.0
                    
#r "nuget: Carubbi.WindowsAppHelper, 2.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Carubbi.WindowsAppHelper@2.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Carubbi.WindowsAppHelper&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Carubbi.WindowsAppHelper&version=2.0.0
                    
Install as a Cake Tool

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; EnableWindowsTargeting is 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 ...) because dotnet test (VSTest) fails for TUnit/MTP projects on .NET 10.
  • SonarQube job runs only when the SONAR_TOKEN repo secret exists; config in sonar-project.properties (project key rcarubbi_Carubbi.WindowsAppHelper, org rcarubbi).
  • Publishing uses trusted publishing: the nuget/login@v1 action (account rcarubbi) must be linked to the repository's environment via NuGet.org; the production GitHub environment holds the required configuration.

Release flow

  1. git tag v2.0.0 (or bump Version in the csproj first)
  2. git push --tags
  3. publish workflow 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 Compatible and additional computed target framework versions.
.NET net10.0-windows7.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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.

Version Downloads Last Updated
2.0.0 107 9/2/2026
1.0.0 2,960 8/20/2018