Soenneker.Compression.SevenZip
4.0.938
Prefix Reserved
See the version list below for details.
dotnet add package Soenneker.Compression.SevenZip --version 4.0.938
NuGet\Install-Package Soenneker.Compression.SevenZip -Version 4.0.938
<PackageReference Include="Soenneker.Compression.SevenZip" Version="4.0.938" />
<PackageVersion Include="Soenneker.Compression.SevenZip" Version="4.0.938" />
<PackageReference Include="Soenneker.Compression.SevenZip" />
paket add Soenneker.Compression.SevenZip --version 4.0.938
#r "nuget: Soenneker.Compression.SevenZip, 4.0.938"
#:package Soenneker.Compression.SevenZip@4.0.938
#addin nuget:?package=Soenneker.Compression.SevenZip&version=4.0.938
#tool nuget:?package=Soenneker.Compression.SevenZip&version=4.0.938
Soenneker.Compression.SevenZip
Extracts 7-Zip archives into temporary directories using either SharpCompress or a bundled native 7-Zip executable.
Installation
dotnet add package Soenneker.Compression.SevenZip
Registration
using Microsoft.Extensions.DependencyInjection;
using Soenneker.Compression.SevenZip.Registrars;
services.AddSevenZipCompressionUtilAsSingleton();
AddSevenZipCompressionUtilAsScoped() is also available.
Managed extraction
ExtractAdvanced uses SharpCompress and supports suffix filtering:
using Soenneker.Compression.SevenZip.Abstract;
string outputDirectory = await sevenZip.ExtractAdvanced(
archivePath,
specificFileFilter: ".json",
cancellationToken: cancellationToken);
try
{
foreach (string file in Directory.EnumerateFiles(
outputDirectory,
"*",
SearchOption.AllDirectories))
{
// Process each extracted JSON file.
}
}
finally
{
Directory.Delete(outputDirectory, recursive: true);
}
The filter is a case-insensitive EndsWith match, not a glob or regular expression. Directories are skipped. When nothing matches, the method returns an empty temporary directory.
Managed extraction is sequential by default. Set isParallel: true only for a trusted, tested workload where concurrent entry extraction is beneficial.
Native extraction
Extract runs the packaged native 7-Zip executable and extracts the complete archive:
string outputDirectory = await sevenZip.Extract(
archivePath,
cancellationToken);
The native path is available on Windows and Linux. It throws PlatformNotSupportedException on other operating systems. A non-zero 7-Zip exit code is surfaced as an exception.
Output ownership and failure behavior
- Both methods create and return a new temporary directory. The caller owns that directory and must delete it after consuming the files.
- On cancellation or extraction failure, the utility attempts to remove the incomplete directory before rethrowing the original error.
- The source archive is opened read-only and is not deleted or modified.
- Managed extraction rejects absolute/traversing paths, symbolic-link entries, and multiple entries that resolve to the same destination.
- Managed entry failures are propagated; the method does not report a partially extracted directory as success.
Handling untrusted archives
Path validation does not make arbitrary archives resource-safe. Neither extraction method imposes limits on expanded byte count, compression ratio, entry count, nesting, or execution time beyond caller cancellation. Validate archive size and provenance, enforce application-level quotas and timeouts, and use an isolated process or container when accepting untrusted uploads.
Do not process extracted files as executable content merely because extraction succeeded.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- SharpCompress (>= 0.50.4)
- Soenneker.Asyncs.Semaphores (>= 4.0.6)
- Soenneker.Libraries.SevenZip (>= 4.0.504)
- Soenneker.Libraries.SevenZip.Linux (>= 4.0.495)
- Soenneker.Utils.Paths.Resources (>= 4.0.238)
- Soenneker.Utils.Process (>= 4.0.1547)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.0.940 | 36 | 9/5/2026 |
| 4.0.939 | 64 | 9/5/2026 |
| 4.0.938 | 101 | 9/5/2026 |
| 4.0.937 | 57 | 9/5/2026 |
| 4.0.936 | 67 | 9/4/2026 |
| 4.0.935 | 76 | 9/4/2026 |
| 4.0.934 | 88 | 9/4/2026 |
| 4.0.933 | 72 | 9/4/2026 |
| 4.0.932 | 67 | 9/4/2026 |
| 4.0.931 | 41 | 9/4/2026 |
| 4.0.928 | 75 | 9/4/2026 |
| 4.0.927 | 43 | 9/4/2026 |
| 4.0.926 | 40 | 9/4/2026 |
| 4.0.925 | 42 | 9/4/2026 |
| 4.0.924 | 63 | 9/4/2026 |
| 4.0.923 | 132 | 9/2/2026 |
| 4.0.922 | 123 | 9/1/2026 |
| 4.0.921 | 95 | 9/1/2026 |
| 4.0.920 | 122 | 8/31/2026 |
| 4.0.919 | 115 | 8/31/2026 |
Update dependency Soenneker.Utils.Paths.Resources to 4.0.238 (#1633)