Repository navigation
Development
git clone https://github.com/m4bwav/CachingServiceWithAOPSupport.git
dotnet restore --locked-mode
dotnet build -c Release
dotnet test -c ReleaseThe SDK version comes from global.json. dotnet test runs net10.0 and net48; net48 runs only on Windows, where it tests the netstandard2.0 build. Run from the repository root. On Windows, a clone at a long path can fail the net48 tests with "The filename or extension is too long"; a short path avoids it.
On 2026-09-30, from a fresh clone of master (4d44f15) at a short path on Windows 11 with SDK 10.0.401:
| Test project | net10.0 | net48 |
|---|---|---|
CachingServiceWithAOP.Tests (unit and public API) |
48 passed | 49 passed |
CachingServiceWithAOP.GoldenTests (the 1.0.1 replay) |
3 passed | 3 passed |
The other commands from AGENTS.md:
dotnet format --verify-no-changes
dotnet restore -p:AuditPipeline=true --force
dotnet pack src/CachingServiceWithAOP -c Release -o artifacts
tests/consumers/run.sh 2.0.0 artifactstests/consumers/run.sh VERSION SOURCE builds fresh consumer programs of the package in three dependency sets (the floors, Autofac 9.3.4 with Autofac.Extras.DynamicProxy 8.1.0, and Autofac 9.3.4 alone), on net10.0 and, on Windows, net48. SOURCE is a folder of packed packages or nuget.org. On Windows it runs in Git Bash; with nuget.org on 2026-09-30 all six consumers answered as expected.
-
src/CachingServiceWithAOP/: the library.CachingServices/MemoryCacheService.cs(the store, the per-key locks, task eviction),CachingServices/IKeyService.cs(keys),CachingServices/ScriptJson.cs(the JavaScriptSerializer-compatible writer for keys),AOPCachingInterceptor.cs,AutofacCachingModule.cs,Extensions/. -
tests/CachingServiceWithAOP.Tests/: unit tests, the public API check againstPublicApi-1.0.1.txt, and on net48 a comparison of the key writer with the real JavaScriptSerializer. -
tests/CachingServiceWithAOP.GoldenTests/: replays the 158 recorded 1.0.1 calls against the current build. -
tests/Golden/: the 1.0.1 recordings and the projects that made them. Frozen: never edit or regenerate them. When the golden test fails, the fix goes insrc/. -
tests/consumers/: the fresh-consumer program andrun.sh. -
ai-docs/: the maintainer's notes, plans and log. Start withai-docs/HANDOFF.md.AGENTS.mdholds the rules for anyone, person or agent, working in the repository.
ci.yml runs on every push to master and every pull request, on ubuntu-24.04 and windows-latest. Its steps:
- locked restore,
dotnet format, a Release build and the NuGet audit as errors; - the tests on net10.0 (both systems) and net48 (Windows);
- a pack, with a check of the package's files and declared dependencies (Linux);
- the fresh consumers.
The ruleset on master requires the final ci job.
From AGENTS.md:
- Update
CHANGELOG.mdwith a dated heading and set<Version>insrc/CachingServiceWithAOP/CachingServiceWithAOP.csproj. - Merge, and wait for
cito pass onmaster. - Tag
v<version>and push the tag. Tags are never force-pushed. -
release.ymlchecks the tag against the version andmaster, tests on Linux and Windows, packs, attests, waits for the maintainer's approval in thenugetenvironment, publishes through nuget.org Trusted Publishing and creates the GitHub Release. No API key is stored anywhere. - Run
verify-published.ymlwith the version.
The dependency floors (Autofac 6.5.0, Autofac.Extras.DynamicProxy 7.1.0, Castle.Core 5.1.1) are kept on purpose and Dependabot ignores them; raise one only for an advisory or an API the code needs.
The wiki is written from the repository and the published package. How it was made and how to update it for the next release is in the repository's ai-docs/notes/2026-09-30-github-wiki.md, next to the program that produced every output on these pages.
This wiki describes CachingServiceWithAOPSupport 2.0.0 and was last updated on 2026-09-30. The library is MIT licensed. Report problems in the issues. On NuGet: CachingServiceWithAOPSupport.