Gui.SystemDialogs.ProGpu.Sharp 0.1.1-preview47

This is a prerelease version of Gui.SystemDialogs.ProGpu.Sharp.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Gui.SystemDialogs.ProGpu.Sharp --version 0.1.1-preview47
                    
NuGet\Install-Package Gui.SystemDialogs.ProGpu.Sharp -Version 0.1.1-preview47
                    
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="Gui.SystemDialogs.ProGpu.Sharp" Version="0.1.1-preview47" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Gui.SystemDialogs.ProGpu.Sharp" Version="0.1.1-preview47" />
                    
Directory.Packages.props
<PackageReference Include="Gui.SystemDialogs.ProGpu.Sharp" />
                    
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 Gui.SystemDialogs.ProGpu.Sharp --version 0.1.1-preview47
                    
#r "nuget: Gui.SystemDialogs.ProGpu.Sharp, 0.1.1-preview47"
                    
#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 Gui.SystemDialogs.ProGpu.Sharp@0.1.1-preview47
                    
#: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=Gui.SystemDialogs.ProGpu.Sharp&version=0.1.1-preview47&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Gui.SystemDialogs.ProGpu.Sharp&version=0.1.1-preview47&prerelease
                    
Install as a Cake Tool

Gui.SystemDialogs.Sharp

Framework-neutral system dialog contracts with separate GUI-framework adapters.

Install only the adapter package for your UI stack. Each adapter depends on the core contracts package automatically.

NuGet packages

Package UI stack Install
Gui.SystemDialogs.Sharp Contracts only dotnet add package Gui.SystemDialogs.Sharp
Gui.SystemDialogs.Wpf.Sharp WPF dotnet add package Gui.SystemDialogs.Wpf.Sharp
Gui.SystemDialogs.WinUI.Sharp WinUI 3 dotnet add package Gui.SystemDialogs.WinUI.Sharp
Gui.SystemDialogs.Maui.Sharp .NET MAUI (Windows) dotnet add package Gui.SystemDialogs.Maui.Sharp
Gui.SystemDialogs.Avalonia.Sharp Avalonia 12 dotnet add package Gui.SystemDialogs.Avalonia.Sharp
Gui.SystemDialogs.Consolonia.Sharp Consolonia / Avalonia 11 dotnet add package Gui.SystemDialogs.Consolonia.Sharp
Gui.SystemDialogs.ProGpu.Sharp ProGPU dotnet add package Gui.SystemDialogs.ProGpu.Sharp
Gui.SystemDialogs.Windows.Sharp Shared Windows helpers Usually pulled in transitively by WinUI / MAUI

Versioning: 0.1.0 is the first public release. Earlier 0.0.x builds were pre-release validation publishes. The ProGPU adapter uses 0.1.1-previewNN suffixes that track ProGPU.WinUI preview releases without bumping the stable adapter family.

Quick start

using Gui.SystemDialogs.Sharp;
using Gui.SystemDialogs.Wpf.Sharp;

IFilePickerService filePicker = new WpfFilePickerService();

var path = await filePicker.OpenFileAsync(new OpenFileDialogOptions
{
    Title = "Open document",
    Filters =
    [
        new FileDialogFilter("Text files", ".txt"),
        new FileDialogFilter("All files", "*.*"),
    ],
});

Avalonia resolves the owner window internally or via a Func<TopLevel?> passed to the constructor:

using Gui.SystemDialogs.Avalonia.Sharp;

IFilePickerService filePicker = new AvaloniaFilePickerService();

Contracts (Gui.SystemDialogs.Sharp)

  • IFilePickerService — open / open-many / save (local paths only)
  • IFolderPickerService — select folder
  • IApplicationExitService — request application/process exit
  • Option/filter models (FileDialogFilter, OpenFileDialogOptions, …)

The contracts assembly must not reference GUI, Windows, WinRT, HWND, or framework types.

Adapters

Project Role
Gui.SystemDialogs.Windows.Sharp HWND ownership + WinRT filter mapping
Gui.SystemDialogs.Wpf.Sharp WPF pickers + exit + WpfFileFilterFormat
Gui.SystemDialogs.WinUI.Sharp Windows App SDK pickers + exit
Gui.SystemDialogs.Maui.Sharp Windows-targeted MAUI pickers + exit
Gui.SystemDialogs.Avalonia.Sharp Avalonia 12 storage pickers + exit
Gui.SystemDialogs.Consolonia.Sharp Consolonia / Avalonia 11 pickers + exit
Gui.SystemDialogs.ProGpu.Sharp ProGPU pickers + exit

Dependency direction

Gui.SystemDialogs.Sharp
    ↑
    ├── Gui.SystemDialogs.Avalonia.Sharp
    ├── Gui.SystemDialogs.Consolonia.Sharp
    ├── Gui.SystemDialogs.ProGpu.Sharp
    ├── Gui.SystemDialogs.Wpf.Sharp
    └── Gui.SystemDialogs.Windows.Sharp
            ↑
            ├── Gui.SystemDialogs.WinUI.Sharp
            └── Gui.SystemDialogs.Maui.Sharp

Development

Requirements: .NET 10 SDK, Python 3 (for the boundary check).

python eng/verify-contract-boundary.py
dotnet test Gui.SystemDialogs.Sharp.slnx -c Release --filter Category!=Smoke

Local package build

dotnet pack Gui.SystemDialogs.Sharp.slnx -c Release -o artifacts/packages

The default local version is 0.1.1 for the stable adapter family (see Directory.Build.props). The ProGPU adapter overrides <Version> in its own .csproj (for example 0.1.1-preview47). Override for a full-family dry run:

dotnet pack Gui.SystemDialogs.Sharp.slnx -c Release -o artifacts/packages -p:Version=0.1.1

Local ProGPU adapter build

The ProGPU adapter carries its own <Version> in Gui.SystemDialogs.ProGpu.Sharp.csproj (for example 0.1.1-preview47):

dotnet pack Gui.SystemDialogs.ProGpu.Sharp/Gui.SystemDialogs.ProGpu.Sharp.csproj -c Release -o artifacts/packages

Native WPF smoke tests (manual / nightly)

FlaUI-driven common dialogs in tests/Gui.SystemDialogs.Wpf.Sharp.SmokeTests. Opt-in via env var (skipped otherwise):

set GUI_SYSTEMDIALOGS_SMOKE=1
dotnet test tests/Gui.SystemDialogs.Wpf.Sharp.SmokeTests -c Release

Publishing

CI runs on every push and pull request to main.

Full family release

All eight packages share the version passed at pack time (default 0.1.1 in Directory.Build.props). Push a tag to publish the full family:

git tag v0.1.1
git push origin v0.1.1

This runs .github/workflows/publish.yml and pushes every *.nupkg in the solution pack output.

Set the NUGET_API_KEY secret in the GitHub nuget environment before the first publish.

ProGPU adapter-only release

When only Gui.SystemDialogs.ProGpu.Sharp needs a ProGPU preview bump, use the selective workflow so stable adapters stay on their current NuGet versions.

Before tagging or dispatching:

  1. Bump <Version> in Gui.SystemDialogs.ProGpu.Sharp/Gui.SystemDialogs.ProGpu.Sharp.csproj.
  2. Bump the ProGPU.WinUI dependency to the matching preview.
  3. Add a ## [0.1.1-previewNN] entry to CHANGELOG.md.
  4. Merge to main.

Then either push a tag:

git tag v0.1.1-preview47
git push origin v0.1.1-preview47

Or run Publish ProGPU adapter manually in GitHub Actions with version 0.1.1-preview47.

This runs .github/workflows/publish-progpu.yml, which verifies the csproj and changelog, runs ProGPU adapter tests, packs only Gui.SystemDialogs.ProGpu.Sharp, and pushes just that .nupkg/.snupkg.

Tags matching v0.1.1-preview* intentionally skip the full-family publish.yml workflow.

License

MIT — see LICENSE.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.2-preview48 95 8/17/2026
0.1.1-preview47 80 8/11/2026
0.1.1-preview 77 7/28/2026
0.1.0 99 7/27/2026
0.0.2 85 7/27/2026