Soenneker.Compression.SevenZip
4.0.914
Prefix Reserved
See the version list below for details.
dotnet add package Soenneker.Compression.SevenZip --version 4.0.914
NuGet\Install-Package Soenneker.Compression.SevenZip -Version 4.0.914
<PackageReference Include="Soenneker.Compression.SevenZip" Version="4.0.914" />
<PackageVersion Include="Soenneker.Compression.SevenZip" Version="4.0.914" />
<PackageReference Include="Soenneker.Compression.SevenZip" />
paket add Soenneker.Compression.SevenZip --version 4.0.914
#r "nuget: Soenneker.Compression.SevenZip, 4.0.914"
#:package Soenneker.Compression.SevenZip@4.0.914
#addin nuget:?package=Soenneker.Compression.SevenZip&version=4.0.914
#tool nuget:?package=Soenneker.Compression.SevenZip&version=4.0.914
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.908)
- Soenneker.Utils.Process (>= 4.0.1531)
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.966 | 0 | 9/13/2026 |
| 4.0.963 | 0 | 9/13/2026 |
| 4.0.962 | 41 | 9/13/2026 |
| 4.0.961 | 48 | 9/13/2026 |
| 4.0.959 | 74 | 9/12/2026 |
| 4.0.958 | 39 | 9/12/2026 |
| 4.0.956 | 54 | 9/12/2026 |
| 4.0.955 | 96 | 9/12/2026 |
| 4.0.954 | 57 | 9/12/2026 |
| 4.0.953 | 136 | 9/10/2026 |
| 4.0.952 | 100 | 9/9/2026 |
| 4.0.951 | 82 | 9/9/2026 |
| 4.0.950 | 101 | 9/9/2026 |
| 4.0.949 | 97 | 9/9/2026 |
| 4.0.948 | 97 | 9/9/2026 |
| 4.0.947 | 160 | 9/8/2026 |
| 4.0.946 | 106 | 9/8/2026 |
| 4.0.945 | 85 | 9/8/2026 |
| 4.0.944 | 129 | 9/8/2026 |
| 4.0.914 | 109 | 8/30/2026 |
Update dependency Soenneker.Utils.Process to 4.0.1530 (#1609)