7-Zip在.net中的使用

 

1.       添加7z.dll

由于7z.dll 是二进制文件,在.net 中不能像添加reference的方式进行引用。对于这种情况,微软采用命令的方式将7z.dll 添加至工程引用。

 

(1)     在工程上点击右键,选择“属性”:

7-Zip在.net中的使用_第1张图片

 

(2)     在“Build Event”编写命令行,使其在编译的时候,可以引用上7z.dll

7-Zip在.net中的使用_第2张图片

 

不用担心书写的格式与语法,微软提供了编写工具。

1)       Edit Post-build

2)       根据弹出的对话框,选择相应的路径

3)       使用 copy命令,从源文件地址复制到指定的位置

2.       由于二进制的7zip本身是不能编译为IL文件的,国外有高人对它进行了.net封装,添加SevenZipSharp引用。

7-Zip在.net中的使用_第3张图片

 

7-Zip在.net中的使用_第4张图片

 

 

3.       OK, 准备工作就绪。下面就进入代码的编写的阶段了。

对于7zip的配置还是比较麻烦的,这里,我仅仅是对rar文件进行解压

 

 

///

/// 解压指定的文件到指定的目录中去 /// /// /// public void UnCompressRAR(string srcFileName, string targetFolder) { if (Directory.Exists(targetFolder)) { log.DebugFormat("已经存在指定的目录:{0},已经解压缩完毕?", targetFolder); return; } else { Directory.CreateDirectory(targetFolder); } string _sevenZipDllPath = Application.StartupPath; // for vs.net unit test //string _sevenZipDllPath = System.Reflection.Assembly.GetExecutingAssembly().Location; //_sevenZipDllPath = _sevenZipDllPath.Substring(0, _sevenZipDllPath.LastIndexOf("//")); string zPath = Path.Combine(_sevenZipDllPath, "7z.dll"); if (File.Exists(zPath)) { SevenZipExtractor.SetLibraryPath(zPath); } using (SevenZipExtractor sZipExtr = new SevenZipExtractor(srcFileName)) { sZipExtr.Extracting += ((s, e) => { }); sZipExtr.FileExtractionStarted += ((s, e) => { }); sZipExtr.FileExists += ((s, e) => { }); sZipExtr.ExtractionFinished += ((s, e) => { }); sZipExtr.ExtractArchive(targetFolder); } }

 

这里需要注意的是,必须要找到7z.dll 所在的位置,然后才能进行调用。

string _sevenZipDllPath = Application.StartupPath;

string zPath = Path.Combine(_sevenZipDllPath, "7z.dll");

当使用单元测试的时候,由于每次路径都是发生变化的,我们可以采用如下的方法获取文件路径所在位置:

 //for vs.net unit test

 string _sevenZipDllPath = System.Reflection.Assembly.GetExecutingAssembly().Location;

 _sevenZipDllPath = _sevenZipDllPath.Substring(0, _sevenZipDllPath.LastIndexOf("//"));

4.       测试解压,all passedJ

 

Reference

 

7-Zip 中文官方网站:

http://7z.sparanoid.com/

 

7-Zip 常见问题解答

http://aspnet.bc8.com.cn/news/view/229/52882.html

 

.NET应用程序中使用7-Zip的压缩/解压缩功能

http://www.infoq.com/cn/news/2008/06/7-Zip-from-.NET

你可能感兴趣的:(C#,.net,string,7zip,reference,单元测试,微软)