Soenneker.Compression.SevenZip
4.0.910
Prefix Reserved
See the version list below for details.
dotnet add package Soenneker.Compression.SevenZip --version 4.0.910
NuGet\Install-Package Soenneker.Compression.SevenZip -Version 4.0.910
<PackageReference Include="Soenneker.Compression.SevenZip" Version="4.0.910" />
<PackageVersion Include="Soenneker.Compression.SevenZip" Version="4.0.910" />
<PackageReference Include="Soenneker.Compression.SevenZip" />
paket add Soenneker.Compression.SevenZip --version 4.0.910
#r "nuget: Soenneker.Compression.SevenZip, 4.0.910"
#:package Soenneker.Compression.SevenZip@4.0.910
#addin nuget:?package=Soenneker.Compression.SevenZip&version=4.0.910
#tool nuget:?package=Soenneker.Compression.SevenZip&version=4.0.910
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.Libraries.SevenZip (>= 4.0.433)
- Soenneker.Libraries.SevenZip.Linux (>= 4.0.424)
- Soenneker.Utils.Directory (>= 4.0.906)
- Soenneker.Utils.Process (>= 4.0.1525)
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.914 | 0 | 8/30/2026 |
| 4.0.913 | 0 | 8/30/2026 |
| 4.0.912 | 0 | 8/30/2026 |
| 4.0.911 | 0 | 8/30/2026 |
| 4.0.910 | 0 | 8/30/2026 |
| 4.0.909 | 0 | 8/30/2026 |
| 4.0.908 | 22 | 8/29/2026 |
| 4.0.907 | 25 | 8/29/2026 |
| 4.0.906 | 32 | 8/29/2026 |
| 4.0.905 | 198 | 8/26/2026 |
| 4.0.904 | 78 | 8/26/2026 |
| 4.0.903 | 81 | 8/26/2026 |
| 4.0.902 | 81 | 8/25/2026 |
| 4.0.901 | 142 | 8/22/2026 |
| 4.0.900 | 86 | 8/22/2026 |
| 4.0.899 | 111 | 8/22/2026 |
| 4.0.898 | 240 | 8/18/2026 |
| 4.0.897 | 98 | 8/18/2026 |
| 4.0.896 | 252 | 8/13/2026 |
| 4.0.895 | 116 | 8/13/2026 |
Harden 7-Zip extraction and improve documentation