it-roy-ru.com

Установил .Net 4.5, но не может использовать класс ZipFile в Visual C #

Я новичок в программировании Visual Studio. 

Я недавно обновил .Net 4.0 до 4.5, чтобы использовать класс ZipFile в System.IO.Compression, но после завершения установки Visual Studio (я использую 2012) все еще не может распознать ZipFile как имя класса. 

Я убедился, что .Net 4.5 появляется в списке программ панели управления, и мое решение на C # устанавливает .Net Framework 4 в качестве целевой платформы. 

Может ли кто-нибудь помочь мне понять это?

29
wuxilixi

Смотрите Класс ZipFile на MSDN. Это показывает, что требуемая версия платформы - 4.5. После того, как исправлена ​​версия платформы, вы добавили ссылку на сборку System.IO.Compression.FileSystem.dll и добавили директиву using System.IO.Compression в ваш класс.

61
Daniel Kelley

Вам также необходимо обратиться к сборке System.IO.Compression.FileSystem.dll.

13
platon

Просто чтобы уточнить предыдущие ответы, вот как добавить ссылки вручную:

<configuration>
  <system.web>
    <compilation targetFramework="4.5">
      <assemblies>
        <add Assembly="System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add Assembly="System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
      </assemblies>
    </compilation>
  </system.web>
</configuration>

Файлы можно найти в C:\Windows\Microsoft.NET\Assembly\GAC_MSIL \, а подпапки содержат необходимую информацию о версии, культуре и PublicKeyToken.

7
The Conspiracy

Вам нужно изменить целевую структуру текущего проекта с .Net 4 на .Net 4.5.

5
daryal

В моем случае мне нужно было вручную удалить все ссылки на dll, которые начинались с System.IO.Compression, а затем добавить одну за другой нужные (System.IO.Compression.FileSystem и т.д. .) хотя я написал только одно заявление об использовании

using System.IO.Compression;

Я надеюсь, что это помогает кому-то

1
Hugo Nava Kopp

Для Windows Phone 8.1 используйте NuGet, чтобы добавить пакет Microsoft Compression в свой проект и сослаться на него.

Если у вас был более старый проект WP8, возможно, вы использовали другой пакет, который создавал бы конфликты с dll System.IO.Compression, который является частью .NET 4.5, поставляемой с WP8.1. Вам нужно избавиться от этого и использовать Microsoft Compression, которая гармонично работает с .NET 4.5. Вот как я сюда попал!

1
Andy Weinstein

Новые функции в .NET 4.5

Улучшения сжатия Zip для уменьшения размера сжатого файла. См. Пространство имен System.IO.Compression.

Добавьте сборку System.IO.Compression в качестве ссылки на ваш проект. Вы может также захотеть сослаться на System.IO.Compression.FileSystem Assembly для доступа к трем методам расширения (из класса ZipFileExtensions) для класс ZipArchive: CreateEntryFromFile, CreateEntryFromFile, и ExtractToDirectory. Эти методы расширения позволяют вам сжимать и распакуйте содержимое записи в файл.

Образец

const string zipFilePath = @"C:\apps\Sample Pictures.Zip";

using (FileStream zipFileToOpen = new FileStream(zipFilePath, FileMode.Open))
using (ZipArchive archive = new ZipArchive(zipFileToOpen, ZipArchiveMode.Read)) {

        foreach (var zipArchiveEntry in archive.Entries)
            Console.WriteLine(
                "FullName of the Zip Archive Entry: {0}", zipArchiveEntry.FullName
            );
}

Рекомендации:
http://msdn.Microsoft.com/en-us/library/ms171868.aspx
http://www.tugberkugurlu.com/archive/net-4-5-to-support-Zip-file-manipulation-out-of-the-box

1
Kiquenet