-
Notifications
You must be signed in to change notification settings - Fork 3
development
github-actions[bot] edited this page Sep 13, 2026
·
2 revisions
| Tool | Version | Notes |
|---|---|---|
| .NET SDK |
10.0 (pinned: global.json → 10.0.0, rollForward: latestMajor) |
dotnet --version must resolve to 10.x |
| OS | Windows 10/11 | WPF + Dokan/WinFsp |
| Drivers (to run) | Dokan v2 and/or WinFsp ≥ 2.1 | Only needed for manual mount testing; unit tests do not need drivers |
| IDE | Visual Studio 2022+ or Rider | Solution: CSharp_SimpleZipDrive.sln
|
dotnet build CSharp_SimpleZipDrive.sln -c Release
dotnet run --project SimpleZipDrive # Dokan variant
dotnet run --project SimpleZipDrive_WinFsp # WinFsp variantDebug runs mount exactly like packaged builds (in-process driver hosting). F5 in the IDE works as usual; the log pane and session log show the same diagnostics as release builds.
dotnet test SimpleZipDrive.Tests -c Release- xUnit 2.9.3, 952 facts + 54 theories (~1,245 cases), coverlet collector included.
- Layout mirrors production: root classes cover the Dokan variant + Core;
WinFsp\contains parallelWinFsp*-prefixed classes for the WinFsp variant;Fakes\providesFakeDokanFileInfo,FakeUserNotificationService,MockBugReport. - Areas: filesystem core, memory-cache behaviour, error handling, streams/read-ahead, settings, services, update checker (asserts the canonical GitHub endpoint), logging/error filtering, administrator checks, archive formats (including ZArchive/XISO adapters).
-
Settings-file isolation: the three test classes that exercise the real
settings.datpath (AppSettingsAdditionalTests,SettingsServiceTests,WinFspSettingsServiceTests) share theSettings filexUnit collection so they never race each other (the oldSave_WritesValidJsonflake).
.github/workflows/ci.yml runs on every push and pull request to master: restore, Release build (must stay analyzer-warning-clean), full test suite, .trx uploaded as the test-results artifact. The release workflow (release.yml) re-verifies and packages the four platform bundles behind the protected release environment; the wiki sync workflow mirrors docs/ to the repository wiki. See Building & Packaging.
-
Language level: default C# for net10.0 — file-scoped namespaces, collection expressions, target-typed
new,requiredmembers,System.Threading.Lockfor lock objects. -
Analyzers: Meziantou.Analyzer + the three Roslynator packs run on every project; the build is warning-clean (a few
MArules relaxed in.editorconfig). Keep it that way. -
Structure: shared code lives in
SimpleZipDrive.Core(Models\,Interfaces\,Services\,Logging\,Views\); the two app projects stay thin (UI + driver glue only). New functionality goes into Core with an interface if the variants need to differ. -
Tests: every new Core/service behaviour gets tests in the existing classes; driver-specific behaviour gets mirrored into the
WinFsp\classes where relevant. -
References\is vendored reference material (other zipfs implementations) — excluded from compilation; do not#includefrom it.
- The session log (
%LOCALAPPDATA%\SimpleZipDrive\Temp\Logs\debug_*.log) is verbose — reproduce, then read. - WinFsp mounts also write a native driver log per attempt (
winfsp_debug_*.log). - To debug a packaged single-file build (e.g. interop issues), use the publish workflow from Building & Packaging and attach to the exe —
DebugTypeisembedded, so symbols are inside.
Deep Dives
Operations
Development
Resources