Skip to content

Build WinForms Quickstart for .NET 4.8 Windows 11#251

Merged
Brian Plattenburg (bplattenburg) merged 14 commits intomainfrom
da-144-winforms-dotnet-48
May 8, 2026
Merged

Build WinForms Quickstart for .NET 4.8 Windows 11#251
Brian Plattenburg (bplattenburg) merged 14 commits intomainfrom
da-144-winforms-dotnet-48

Conversation

@biozal
Copy link
Copy Markdown
Contributor

@biozal Aaron LaBeau (biozal) commented Mar 20, 2026

This PR provides a Quickstart for Windows 11 and .NET version 4.8. Originally requested by Brian Plattenburg (@bplattenburg), originally targeting a pre-release Ditto SDK build; now bumped to the GA release.

This shares as much code as possible with the modern version of Windows Form Quickstart example. Very important notes:

  • This only compiles on Windows with Visual Studio (tested on Visual Studio 2019/2026). It probably works in Rider but was not tested with it.
  • This requires the Ditto NuGet package version 4.14.4 (GA) or newer — 4.14.4 is the first stable release with .NET Framework (netstandard2.0) support. Will not work on 4.14.3 or earlier.
  • It will never build on any other platform than Windows 11 or Windows Server because it requires .NET 4.8 specifically and that is limited to Windows platforms.

No tests are provided for the app currently.

Recent updates

  • Bumped Ditto SDK from 4.14.4-experimental-net-framework-support.1 to 4.14.4 GA across packages.config, Taskapp.WinForms.Net48.csproj, and the README API-reference link.
  • Dropped vestigial websocketUrl plumbing — the new DittoConfig + DittoConfigConnect.Server flow routes everything through the auth URL, so the parameter was unused. Removed from TasksPeer, TasksPeerService, AppConfiguration, Program, and .env.sample.
  • Re-added the DQL strict-mode disable in TasksPeer.Create — the 4.x SDK still defaults to strict mode (default flips in v5), so it's required to support the SELECT * query the quickstart uses.
  • Cleaned up unused imports in Program.cs.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Windows Forms quickstart targeting .NET Framework 4.8 (Windows 11 / VS) using an experimental Ditto SDK build, largely mirroring the existing modern WinForms sample.

Changes:

  • Introduces a new dotnet-winforms-net48/ WinForms app (UI + Ditto CRUD/observe wrapper) targeting net48.
  • Adds net48-specific build assets (solution/project, packages.config, native DLL copy rule).
  • Adds local .env-based configuration loading and quickstart documentation.

Reviewed changes

Copilot reviewed 18 out of 22 changed files in this pull request and generated 13 comments.

Show a summary per file
File Description
dotnet-winforms-net48/packages.config Pins Ditto experimental net48-support packages and supporting dependencies.
dotnet-winforms-net48/ToDoTask.cs Task document model for the tasks collection (Newtonsoft.Json attributes).
dotnet-winforms-net48/TasksPeerService.cs Singleton service wrapper around TasksPeer for app-wide access.
dotnet-winforms-net48/TasksPeer.cs Ditto SDK wrapper implementing CRUD + subscription + observation for tasks.
dotnet-winforms-net48/Taskapp.WinForms.Net48.sln New VS solution for the net48 WinForms quickstart.
dotnet-winforms-net48/Taskapp.WinForms.Net48.csproj Net48 WinForms project file with explicit assembly refs and native DLL copy.
dotnet-winforms-net48/README.md Net48-specific prerequisites and run instructions.
dotnet-winforms-net48/Properties/Settings.settings Default settings file for WinForms project scaffolding.
dotnet-winforms-net48/Properties/Settings.Designer.cs Auto-generated Settings designer.
dotnet-winforms-net48/Properties/Resources.resx Project resources container.
dotnet-winforms-net48/Properties/Resources.Designer.cs Auto-generated Resources designer.
dotnet-winforms-net48/Properties/AssemblyInfo.cs Assembly metadata for net48 build.
dotnet-winforms-net48/Program.cs WinForms entry point with async initialization via a loading dialog.
dotnet-winforms-net48/MainForm.resx Resources for the main WinForms UI.
dotnet-winforms-net48/MainForm.cs Main UI logic: list rendering + add/edit/delete + done toggling.
dotnet-winforms-net48/MainForm.Designer.cs Main form designer-generated layout.
dotnet-winforms-net48/LoadingForm.cs Modal loading form that awaits Ditto initialization.
dotnet-winforms-net48/LoadingForm.Designer.cs Loading form designer-generated layout.
dotnet-winforms-net48/InputDialog.cs Simple modal input dialog for editing task titles.
dotnet-winforms-net48/AppConfiguration.cs .env loader and required config validation.
dotnet-winforms-net48/App.config Declares .NET Framework 4.8 runtime.
dotnet-winforms-net48/.env.sample Sample environment file template for required Ditto settings.
Files not reviewed (4)
  • dotnet-winforms-net48/LoadingForm.Designer.cs: Language not supported
  • dotnet-winforms-net48/MainForm.Designer.cs: Language not supported
  • dotnet-winforms-net48/Properties/Resources.Designer.cs: Language not supported
  • dotnet-winforms-net48/Properties/Settings.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread dotnet-winforms-net48/MainForm.cs Outdated
Comment thread dotnet-winforms-net48/MainForm.cs Outdated
Comment thread dotnet-winforms-net48/InputDialog.cs Outdated
Comment thread dotnet-winforms-net48/TasksPeerService.cs
Comment thread dotnet-winforms-net48/README.md Outdated
Comment thread dotnet-winforms-net48/README.md Outdated
Comment thread dotnet-winforms-net48/README.md Outdated
Comment thread dotnet-winforms-net48/Taskapp.WinForms.Net48.sln Outdated
Comment thread dotnet-winforms-net48/TasksPeer.cs
Comment thread dotnet-winforms-net48/MainForm.cs Outdated
Aaron LaBeau (biozal) and others added 8 commits March 20, 2026 13:43
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 18 out of 22 changed files in this pull request and generated 2 comments.

Files not reviewed (4)
  • dotnet-winforms-net48/LoadingForm.Designer.cs: Language not supported
  • dotnet-winforms-net48/MainForm.Designer.cs: Language not supported
  • dotnet-winforms-net48/Properties/Resources.Designer.cs: Language not supported
  • dotnet-winforms-net48/Properties/Settings.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread dotnet-winforms-net48/README.md Outdated
Comment thread dotnet-winforms-net48/TasksPeer.cs Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…rict mode

- 4.14.4 GA replaces the experimental net-framework-support package
- websocketUrl is vestigial in the new DittoConfig flow — removed from
  TasksPeer, TasksPeerService, AppConfiguration, Program, and .env.sample
- Re-added DQL strict mode disable (4.x SDK still defaults to strict;
  default flips in v5)
- Cleaned up unused imports in Program.cs
@bplattenburg
Copy link
Copy Markdown
Member

Brian Plattenburg (bplattenburg) commented May 8, 2026

Aaron LaBeau (@biozal) bumped this to 4.14.4 GA, dropped the websocketUrl stuff (unused with the new DittoConfig path), and put the strict mode disable back since 4.x still defaults to strict. Mind giving it a test on Windows when you have a sec?

Bulzan Sergiu (@busec0) to approve.

@bplattenburg Brian Plattenburg (bplattenburg) deleted the da-144-winforms-dotnet-48 branch May 8, 2026 15:05
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.

4 participants