- OS: Windows
- Shell: Use Command Prompt (
cmd.exe) only; avoid Bash/Unix commands - Tools: Visual Studio 2026 (v18) and appropriate .NET SDKs starting with
net472 - Build scripts are Windows
.cmdfiles underScripts/ - Do not run build scripts unless instructed to do so
Source/Testing/Krypton Components: Core libraries (Krypton.Toolkit,Krypton.Ribbon,Krypton.Navigator,Krypton.Workspace,Krypton.Docking) and the solutionKrypton Toolkit Suite - VS2022.slnSource/Testing/Krypton Components/TestForm: WinForms sample app used to validate changesSource/Testing/TestHarnesses: Small repro/test harnesses (e.g.,ThemeSwapRepro)Scripts//Testing/: Build and packaging scripts (build-stable.cmd,build-canary.cmd,build-nightly.cmd,build.proj)Artefacts/: Build outputs by configuration (e.g.,Artefacts/Debug)Documents/,Assets/,Logs/: Docs, images, and build logs
- Build solution (Debug):
dotnet build "Source/Testing/Krypton Components/Krypton Toolkit Suite - VS2022.sln" -c Debug
- Run sample app:
dotnet run --project "Source/Testing/Krypton Components/TestForm/TestForm.csproj" -c Debug
- Preset builds (Windows cmd):
Scripts/Testing/build-stable.cmd|Scripts/Testing/build-canary.cmd|Scripts/Testing/build-nightly.cmd
- Outputs land in
Artefacts/<Configuration>/. Supported TFMs includenet472,net48,net481,net8.0-windows,net9.0-windows,net10.0-windows,net11.0-windows
- Line endings/encoding: CRLF, UTF-8 with BOM
- Follow
Source/.editorconfigand project analyzers (EnableNETAnalyzers=true) - Indentation: 4 spaces; line endings: CRLF
- Projects use
global usinglike in GlobalDeclarations.cs, do not add new usings in other files - Before adding new variables check for existing ones
- No variable aliasing
- Surgical edits: preserve structure, identifiers, and existing comments; avoid adding defensive checks unless asked
- No unneeded
try/catchblocks if there's no catch handling - Idioms: use null-propagation and object/collection initializers where consistent
- Compatibility: ensure changes build for
net472and C# 7.3 - WinForms:
UseWindowsForms=true; prefer designer-friendly patterns and keep partial classes tidy - WinForms designer: keep object declarations at file bottom; initialize in
*.Designer.csInitializeComponent() - Constraint: do not use
yield returninsidecatchblocks
- No formal unit test suite. Validate changes via
TestFormscenarios and harnesses underSource/Testing/TestHarnesses - When fixing a bug, add/adjust a minimal repro in
TestFormor a harness and describe manual steps in the PR
- Commits: short, imperative subject; reference issues/PRs (e.g.,
Fix autosizing (#2433)or2439 V110 datecell autosizing) - PRs: clear description, linked issues, screenshots/gifs for UI changes, notes on breaking changes/TFM impact
- Windows long paths must be enabled to build locally (see README link). Build on Windows for
-windowsTFMs