C#에서 압축 작업할 때, ZipFile 클래스 / 객체가 없다고 나오는 경우.
말 그대로다.
보통 "C# 압축" 으로 검사하면 맨 먼저 나오는게 MSDN 의 참고 자료 링크다.
https://msdn.microsoft.com/ko-kr/library/ms404280(v=vs.110).aspx
같은거.
예제 코드도 되게 간단해서 쓰기 쉽다.
그런데, MSDN 자료임에도 불구하고 예제 코드만 잘라내서 컴파일 해 보면 안되는 경우가 있다.
만일 이 때의 에러가
The name 'zipfile' does not exist in the current context
와 같다면, 원인은 너님의 DotNet Framework 가 4.0 기반이라서 그렇다.
어디에서 본 글인지는 기억 안나는데, 어쨌던 C# 에서 사용 가능한 압축 라이브러리 ( 보통 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.IO.Compression.FileSystem.dll 에 있다.) 는 닷넷 프레임워크 4.5 에 와서야 추가된 라이브러리이다.
그러므로 3.5 혹은 4.0의 구버전 .net Framework 를 사용하고 있는 컴퓨터거나,
Windows 7 이라도 업그레이드 안하면, 간혹 해당 기능을 사용 못 할 때가 있다.
근데, 이게 나만 쓸 거라면야 업뎃 해 버리면 되지만...
예를 들어 패키지나 시스템으로 납품한다거나,
고객의 시스템이 윈도우 업그레이드를 꺼린다거나, 기타등등의 까닭으로 닷넷을 업뎃 못 한다면 어쩔건가?
[ 고객을 때릴꺼야?( 좋은 생각일지도 ) ]
그래서 뒤져보니, 이것도 이미 누가 dll로 만들어 놓은 게 있더라.
보통 구글에서 뒤지면, ionic 이라는 dll 이랑 SharpZipLip 이라는 dll 의 두가지가 나온다.
설명은 둘 다 잘 되어 있긴 한데, 리플 읽어보니 ionic 쪽에는 버그가 있나보다.
대부분은 다 잘 썼고 고맙다고 답글 달려 있는데, 그래도 뭐... 찜찜하잖아.
그래서 SharpZipLip 썼다.
사용법과 설명은
--- IONIC DLL ---
http://dotnetzip.codeplex.com/
http://nowonbun.tistory.com/97 (한글)
--- SharpZipLip ---
http://icsharpcode.github.io/SharpZipLib/
http://onlyican.tistory.com/245 (한글)
http://blog.naver.com/PostView.nhn?blogId=vackjangmi&logNo=120126808831 (한글)