프로그램/C#

C#에서 압축 작업할 때, ZipFile 클래스 / 객체가 없다고 나오는 경우.

(주)CKBcorp., 2016. 6. 12. 20:32
반응형


말 그대로다. 

보통 "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 (한글)


설명 잘 되어 있고 써보니 작동 잘 되므로, 코드 설명은 패쓰. 궁금하면 링크 들어가서 봐라.

반응형