v5.9.5
Highlights
Fixed
- Issue #239 — rare
IOException: The process cannot access the file … .downloadwhen finalizing a download. The library deleted its temp/target files with a bareFile.Delete, which threw immediately if an external process (typically an antivirus real-time scan of the freshly written file) still held a handle. All downloader-owned file deletions now retry with exponential backoff (6 attempts over ~3 seconds), which rides out transient scans of even large files. If the lock never clears, the failure is no longer a bareIOException: the error now explains that an external process (antivirus or another program) is holding the file and how to resolve it, with the original exception preserved asInnerException. (#239) RemoteFileResolver.GetFileInfoAsyncno longer throws on slow/unreachable hosts. The internal connect-timeout cancellation (TaskCanceledException) was being rethrown as a hard failure even though the caller's cancellation token was never signaled, breaking the documented fallback to the URL-derived file name. The rethrow is now gated on the caller's token; unreachable hosts fall back as intended.
Added
- .NET 11 (preview) support —
net11.0target added to the library and validated by CI on Ubuntu, macOS, and Windows alongsidenet8.0/net9.0/net10.0.
Internal
- Test coverage raised from 88.7% to 90.2% with new deterministic unit tests; several flaky tests (stop/resume timing, Windows CI file-lock cleanup) made deterministic; test project switched to portable PDBs to fix a Fody crash on the Windows
net11.0CI leg.
Full Changelog: v5.9.4...v5.9.5