无法添加对.dll的引用。请确保该文件是可访问的,并且它是有效的程序集或COM组件

时间:2015-04-03 00:33:38

标签: c# .net dll visual-studio-2013 7zip

好的,现在我会尝试尽可能地解释我的问题。我想在我的c#项目中使用流行的压缩算法7zip

已经有7zip的NuGet包

现在,当我安装7zip页面https://www.nuget.org/packages/SevenZipSharp/0.64.0时,它安装得很好但是当我尝试运行时它会出错

An unhandled exception of type 'SevenZip.SevenZipLibraryException' occurred in SevenZipSharp.dll

Additional information: Can not load 7-zip library or internal COM error! Message: failed to load library

所以我决定手动添加dll文件,我在下面得到这个错误

    ---------------------------
Microsoft Visual Studio
---------------------------
A reference to 'D:\51_doktora tez projesi\program_crawler\doktora_tez_projesi_crawler_program\ExternalDLLs\7z_9_38_2015_01_03.dll' could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component.
---------------------------
OK   
---------------------------

好的但是我找到了一个解决方案并且它的工作原理

首先安装nuget包

在开始调用函数设置路径之前

SevenZip.SevenZipExtractor.SetLibraryPath("SevenZipSharp.dll");

SevenZip.SevenZipCompressor.SetLibraryPath("SevenZipSharp.dll");

好的第二个问题也很有趣

我想使用最新版本的7zip DLL文件。所以从官方网站下载:https://sourceforge.net/projects/sevenzip/files/7-Zip/9.38/

安装了已下载的MSI并获得了64位dll文件。但是,当我尝试引用此文件时,它会失败并显示错误消息:Please make sure that the file is accessible, and that it is a valid assembly or COM component.

然而,诀窍再次起作用

我安装了NuGet 7zip包。然后在调用函数之前,我设置了这两行代码并使用最新版本的DLL文件

SevenZip.SevenZipExtractor.SetLibraryPath("ExternalDLLs/7z_9_38_2015_01_03.dll");
            SevenZip.SevenZipCompressor.SetLibraryPath("ExternalDLLs/7z_9_38_2015_01_03.dll");

所以我正在寻找答案为什么会发生这些事情?为什么我不能直接添加DLL文件作为参考,但这个技巧有效吗?

Windows 8.1 64位,Visual Studio 2013更新3 WPF应用程序

1 个答案:

答案 0 :(得分:2)

你问题的一部分很可能源于SevenZipSharp只是7z.dll的包装器这一事实,据我所知,这是一个c ++ dll。对于SevenZipSharp,项目page还提到可以使用任何兼容的dll并且需要指定:

  

SevenZipSharp需要一个7-zip本机库才能运行。您可以在编译时在LibraryManager.cs中指定7-zip dll(7z.dll,7za.dll等)的路径,在运行时指定app.config或通过SetLibraryPath()方法。 +" 7z.dll"是默认路径。对于64位系统,必须使用这些库的64位版本。   7-zip附带7z.dll,用于所有存档操作(通常是" Program Files \ 7-Zip \ 7z.dll")。 7za.dll是7z.dll的简易版,它只支持7zip档案。您甚至可以使用7-zip源构建您想要的格式的库。 SevenZipSharp将与他们一起工作。