2013-08-20 3 views
2

저는 7zip으로 포격하여 다양한 형식의 아카이브 파일을 처리하는 C# 응용 프로그램에서 작업하고 있습니다. 당신이 상상할 수 있듯이, 이것은 끔찍하고 버그가 많고 성능이 좋지 않습니다.Mono/Linux의 SevenZipSharp

SevenZipSharp 라이브러리 (http://sevenzipsharp.codeplex.com/)로 교체하는 것이 좋겠지 만 Linux에서 Mono로 작동하도록 할 수는 없습니다. 아무도이 일을 처리 했습니까? 작동시키기위한 단계는 무엇입니까?

실제 7zip Windows DLL은 Linux에서 완전히 쓸모가 없다고 생각합니다. p7zip과 함께 제공되는 7z.so 파일을 사용해 보았지만 SevenZipSharp는 "엔트리 포인트가 존재하지 않습니다."라고 말합니다.

나는 또한 소스 코드를 얻는 것을 시도했다. 희망하는 SevenZipMono 하위 프로젝트가 있지만, 존재하지 않는 여러 소스 코드 파일로 인해 빌드되지 않습니다. (COM.cs, MonoSpec.cs, InterfaceWrapper.cs 등) 파일이 문자 그대로 어떤 이유로 커밋되지 않은 것처럼 보입니다. 이 시점에서 나는 완전히 붙어있다.

는 (나는 또한 GitHub의에 SevenZipSharp의 포크를 발견하지만, 주요 프로젝트에 동일하게 나타납니다. 그것은 너무 정확히 같은 이유로 구축하지 않습니다.)

이를 만드는 방법에 대한 어떤 제안 실제로 작동합니까?

+1

나는이 프로젝트에 익숙하지 해요,하지만 소스보고 후, 그것은에 Windows 특정 프로젝트처럼 보인다 나, kernel32와 COM의 interop 때문에. Mono 구현조차도 Windows가 아닌 Mono에서 작동하도록 고안되었습니다. – ken

+0

.Net 4.5에는 이전 버전에 비해 훨씬 향상된 지퍼 지원이 내장되어 있습니다. System.IO.Compression을보십시오. 그게 선택의 여지가 있니? –

+0

@JoelCoehoorn 한 가지 형식에만 관심이 없습니다. 나는 7z, PK-zip, GZip, BZip2, tar, rar, zoo, compress 등을 처리 할 수있는 무언가를 원한다. 각각의 개별 라이브러리를 찾는 것은 어렵지 않지만 _all_을 처리하는 것은 너무 많지 않다. 그들. – MathematicalOrchid

답변

0

지금까지 두 옵션의 PInvoke 7z.so.에 모노/리눅스에

  1. 수정 SevenZipSharp이 따라서 소스 코드에서 PInvoke 정의를 변경하고 소스 파일을 다시 컴파일해야합니다. 그 프로젝트의 개발자조차도 아직 제대로하지 못했다면, 나는 그 접근법에 많은주의를 기울일 필요가 있다고 생각합니다. 전체 관리 구현에

  2. 스위치와 같은

https://github.com/adamhathcock/sharpcompress

+0

옵션 # 2는 7z 파일 만 표시합니다. _every_ 유형의 아카이브를 처리하고 싶습니다. 그래서 7zip이 이미 제공하는 LZMA SDK를 사용하는 것을 선택하지 않았습니다. 그것은 단지 7z를 다룹니다. – MathematicalOrchid

+0

@MathematicalOrchid, 가장 일반적인 형식을 지원하는 더 나은 라이브러리가 있으므로 대답을 편집했습니다. –

+0

흥미로운 것 같습니다. 나는 그것을 더 깊이 연구 할 것이다 ... – MathematicalOrchid