Как установить путь к 7z.dll?

583
04 февраля 2017, 07:11

Установлены библиотеки через nuget: 1) SevenZipSharp

Скопирована 7z.dll от 7z в \packages\ .

При добавлении ссылки на неё

Не удаётся добавить ссылку на ... Убедитесь, что файл доступен, и является допустимой сборкой или компонентом COM

Как указать к ней путь?

//так работает но 7z.dll используется сторонняя
//SevenZipExtractor.SetLibraryPath(@"C:\Program Files\7-Zip\7z.dll");
// Синхронная упаковка
var cmpr = new SevenZipCompressor();
cmpr.CompressionLevel = CompressionLevel.Fast;
cmpr.CompressFiles(archiveName, fileNames);

Необработанное исключение типа "SevenZip.SevenZipLibraryException" в SevenZipSharp.dll

Дополнительные сведения: Can not load 7-zip library or internal COM error! Message: DLL file does not exist.

Answer 1

Что нужно для работы с 7zip:

  1. Установить Nuget-пакет SevenZipSharp.
  2. Убедиться, что архитектура (x86/x64) используемой 7z.dll совместима с архитектурой вашей сборки. Если у вас 64-битная сборка, то использовать вам нужно также 64-битную версию 7z.dll.
  3. Настроить копирование библиотеки 7z.dll в аутпут директорию (например, в post build событии).
  4. Указать путь к ней:

    var currentDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    SevenZipCompressor.SetLibraryPath(Path.Combine(currentDir, "7z.dll"));
    
READ ALSO
Как задать значение по умолчанию для свойства типа Font в PropertyGrid?

Как задать значение по умолчанию для свойства типа Font в PropertyGrid?

Для того, чтобы отобразить свойства и поля моего класса в PropertyGrid, я для них задаю атрибуты PropertyGridНапример :

416
Как использовать Costura.Fody?

Как использовать Costura.Fody?

Не могу найти что дальше делать для внедрения dll в exe после

738
Странный конструктор

Странный конструктор

Почему в конструкторе используются фигурные скобки?

426