-
Notifications
You must be signed in to change notification settings - Fork 0
Building and Tasks
All tasks live in the justfile. Run just (or just default) to list them. The solution file
is KeepPressing.slnx.
| Recipe | What it does |
|---|---|
just / just default
|
List all recipes (just --list) |
just build |
mise x -- dotnet build KeepPressing.slnx — full Debug build |
just test |
mise x -- dotnet test KeepPressing.slnx — runs the test projects |
just clean |
Removes bin/ and obj/ for all four projects |
just publish [arch=x64] |
Self-contained Release publish to dist/KeepPressing (then trims it) |
just publish # x64 → dist/KeepPressing
just publish arch=arm64 # arm64 → dist/KeepPressing-arm64It runs dotnet publish KeepPressing -c Release -r win-<arch> and, after publishing, the
TrimPortableDistribution MSBuild target prunes the output (non-en/ja MUI, .pdb, unused native
DLLs). See Portable Distribution.
The justfile sets:
set windows-shell := ["bash", "-uc"]so recipes run under Git Bash, not PowerShell or cmd. This is deliberate: PowerShell consumes
the -- argument separator that mise x -- dotnet … relies on, which would break the recipes. Keep
new recipes POSIX-sh compatible.
Shared settings live in Directory.Build.props and apply to every project:
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<AnalysisLevel>latest-Recommended</AnalysisLevel>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<!-- Debug only: warnings become errors -->
<TreatWarningsAsErrors Condition="'$(Configuration)' == 'Debug'">true</TreatWarningsAsErrors>What this means in practice:
-
just buildis a Debug build, and warnings are errors. Any analyzer or code-style warning fails the build — and the same gate runs in CI (CI/CD). - Release/publish does not treat warnings as errors, because the WinAppSDK trimming pass emits IL2104 warnings that are impractical to suppress.
-
Generated code is excluded from analysis (
*.g.cs,*.Designer.cs,obj/**) via the root.editorconfig. -
Core enforces
ConfigureAwait(false):KeepPressing.Core/.editorconfigsetsdotnet_diagnostic.CA2007.severity = error. The reason is load-bearing — see Threading & ConfigureAwait.
| Project | TFM | Role |
|---|---|---|
KeepPressing |
net10.0-windows10.0.26100.0 |
WinUI 3 app (UI, Interop, MVVM, DI) |
KeepPressing.Core |
net10.0 |
Pure domain logic, zero Win32 |
KeepPressing.Core.Tests |
net10.0 |
Core unit tests |
KeepPressing.App.Tests |
net10.0-windows… |
ViewModel / presentation tests |
Next: Architecture · Testing Strategy · Portable Distribution
KeepPressing · Releases · Issues · Licensed under Apache-2.0
Getting started
User guide
Developer guide