Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

См. ZipFile Class в MSDN. Он показывает, что требуемая версия фрейма - 4.5. После исправления версии фрейма вы добавили ссылку на сборку System.IO.Compression.FileSystem.dll и добавили директиву System.IO.Compression в свой класс.

Ответ 2

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

Ответ 3

Просто для дальнейшего разъяснения предыдущих ответов, здесь, как добавить ссылки вручную в Web.config:

<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>

Или *.csproj:

<Project ...>
  <ItemGroup>
    <Reference Include="System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089, processorArchitecture=MSIL" />
    <Reference Include="System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089, processorArchitecture=MSIL" />
  </ItemGroup>
</Project>

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

Ответ 4

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

Ответ 5

Новые возможности .NET 4.5

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

Добавьте ссылку System.IO.Compression в качестве ссылки на ваш проект. Вы также может захотеть ссылаться на сборку System.IO.Compression.FileSystemдля доступа к трем методам расширения (из класса 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

Ответ 6

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

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

Ответ 7

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

using System.IO.Compression;

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