簡體   English   中英

SevenZipSharp 的問題。 7z.dll 庫未找到甚至定義的庫路徑

[英]Problem with SevenZipSharp. 7z.dll library not found even path to lib defined

我正在創建 ASP.NET Web 應用程序。 我需要在其中提取一些“7z”文件。

我的代碼:

            SevenZipExtractor.SetLibraryPath(@"<some_path>\7z.dll");

            var zipExtractor = new SevenZipExtractor(zipPath);
            zipExtractor.ExtractArchive(path);

根據 SevenZipSharp 文檔,SetLibraryPath 應該可以解決問題,但事實並非如此。

在我在控制台應用程序中進行測試期間,一切正常,但是當我嘗試運行我的 web 應用程序時,我得到“無法加載 7-zip 庫或內部 COM 錯誤:消息。加載庫失敗。 ”。 在控制台應用程序中它更容易,因為 dll 文件可以放在 Debug 文件夾中並且它可以工作。 Web 應用程序由 IIS Express 處理,我猜這是問題所在。

原來 7z.dll 需要在 IIS 創建的臨時文件夾中。 可以通過 Assembly 訪問它:

var assemblyDllPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "7z.dll");

使用它,我們可以將原始 7z.dll 復制到程序集目錄並設置 SevenZipSharp 庫路徑,如下所示:

File.Copy(originalDllPath, assemblyDllPath, overwrite: true);
SevenZipBase.SetLibraryPath(assemblyDllPath);

請注意,覆蓋設置為真。 這是因為有時組裝恰好與以前的組裝相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM