void ExtractEntry(string directory, ZipArchiveEntry entry) { #if NET40 entry.WriteToDirectory(directory, new PackageExtractionOptions(log)); #else var extractAttempts = 10; Policy.Handle <IOException>().WaitAndRetry( retryCount: extractAttempts, sleepDurationProvider: i => TimeSpan.FromMilliseconds(50), onRetry: (ex, retry) => { log.Verbose($"Failed to extract: {ex.Message}. Retry in {retry.Milliseconds} milliseconds."); }) .Execute(() => { entry.WriteToDirectory(directory, new PackageExtractionOptions(log)); }); #endif }
static void ExtractEntry(string directory, ZipArchiveEntry entry) { #if NET40 entry.WriteToDirectory(directory, new ExtractionOptions { ExtractFullPath = true, Overwrite = true, PreserveFileTime = true, WriteSymbolicLink = WriteSymbolicLink }); #else var extractAttempts = 10; Policy.Handle <IOException>().WaitAndRetry( retryCount: extractAttempts, sleepDurationProvider: i => TimeSpan.FromMilliseconds(50), onRetry: (ex, retry) => { Log.Verbose($"Failed to extract: {ex.Message}. Retry in {retry.Milliseconds} milliseconds."); }) .Execute(() => { entry.WriteToDirectory(directory, new ExtractionOptions { ExtractFullPath = true, Overwrite = true, PreserveFileTime = true, WriteSymbolicLink = WriteSymbolicLink }); }); #endif }