Ошибка при попытке заархивировать файлы VB.NET 2003

Мне нужно сделать простой zip-файл с помощью Visual Studio и VB.NET 2003.

После некоторого поиска я попал на эту страницу: http://www.digioz.com/tutorials/zip_unzip_vbNET/Zip_and_Unzip_VB_NET_1.html, который в основном предоставляет мне 3 библиотеки DLL с классами, готовыми для архивирования файлов. Когда я пытаюсь создать экземпляр класса, как говорит мне учебник:

Dim zp As New CGZipLibrary.CGZipFiles

Я получаю эту ошибку:

COM object with CLSID {293364BA-43F8-11D3-BC2D-4000000A2806} is either not valid or not registered.

Идеи? Если у кого-то есть лучший/более простой подход к zip-файлам с использованием VB.NET 2003, это тоже будет полезно.

Спасибо.

ИЗМЕНИТЬ:

Спасибо всем, кто ответил, но я использовал другой подход, чем предложенный, для архивирования моих файлов. Я использовал оболочку Класс Microsoft.VisualBasic.Interaction выглядит следующим образом:

Shell("zip -j " & fileName, AppWinStyle.Hide, True)

Еще раз спасибо тем, кто посвятил свое время, пытаясь помочь мне!


person gabsferreira    schedule 23.08.2012    source источник


Ответы (3)


Похоже, что библиотека, которую вы пытаетесь использовать, является старой COM-dll. Это означает, что вы должны сначала зарегистрировать dll с помощью regsvr32.exe, прежде чем вы сможете ее использовать. Однако я бы рекомендовал использовать нативную (управляемую) библиотеку .NET. Если это не соответствует вашим потребностям, я бы просто рекомендовал взглянуть на класс GZipStream, который является частью платформы .NET.

person Steven Doggart    schedule 23.08.2012
comment
Похоже, класс GZipStream не является частью .NET Framework 1.1:/ - person gabsferreira; 24.08.2012
comment
@devGabriel Как и CGZipLibrary :) Я думаю, вы все равно сможете использовать библиотеки .NET Framework 2.0, даже если у вас более старая версия Visual Studio. - person Steven Doggart; 24.08.2012

Вы пробовали этот? Это очень хорошо: ionic.zip.reduced, библиотека dotnetzip.

Пример:

Using zip As ZipFile = New ZipFile()
     zip.AddFile("c:\photos\personal\7440-N49th.png")
     zip.AddFile("c:\Desktop\2008_Annual_Report.pdf")
     zip.AddFile("ReadMe.txt")
     zip.Save("MyZipFile.zip")
End Using

Другие примеры VB.NET Ionic.ZIP

ОБНОВИТЬ:

Ваша проблема в том, что VS2003 не может использовать таргетинг dll, который был создан в более новой (например, VS2005) версии VS. Для многих, кто пытался это использовать, был создан инструмент, который вы можете скачать здесь. Для получения дополнительной информации посетите этот сайт.

person Qqbt    schedule 23.08.2012
comment
Да, я пытался. Похоже, что версия этой dll не поддерживается Visual Studio 2003 или чем-то подобным. Когда я пытаюсь добавить dll в качестве ссылки на свой проект, Visual Studio выдает мне эту ошибку: Не удалось добавить ссылку на «Ionic.Zip.dll». Это недопустимая сборка или COM-компонент. Можно ссылаться только на сборки с расширением «dll» и COM-компоненты. Убедитесь, что файл доступен и является допустимой сборкой или COM-компонентом. - person gabsferreira; 23.08.2012
comment
@devGabriel Обновил мой ответ - person Qqbt; 23.08.2012

Другой вариант, который я использую в большинстве своих проектов, — это #ZipLib (SharpZipLib), скачать его можно здесь:

http://www.icsharpcode.net/opensource/sharpziplib/Download.aspx

Документация и примеры для VB и C# доступны на одном сайте. Он имеет специальные двоичные сборки (dll) для .NET Framework 1.1, а также более поздние версии. Вполне вероятно, что некоторые другие библиотеки, с которыми вы столкнулись, скомпилированы для .NET 2.0 или более поздней версии, что не будет работать в VS2003.

Не позволяйте названию обмануть вас — оно написано на C# (отсюда и название), но скомпилированные сборки отлично работают в VB.NET. Он поддерживает архивы Zip, GZip, tar и BZip2.

person Hobbes    schedule 23.08.2012
comment
Спасибо, но я использовал другой подход. - person gabsferreira; 24.08.2012