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

Это работает в Bash и Korn, также может идти от более высоких к более низким числам. Наверное, не самый быстрый или красивый, но работает достаточно хорошо. Также обрабатывает негативы.

function num_range {
   # Return a range of whole numbers from beginning value to ending value.
   # >>> num_range start end
   # start: Whole number to start with.
   # end: Whole number to end with.
   typeset s e v
   s=${1}
   e=${2}
   if (( ${e} >= ${s} )); then
      v=${s}
      while (( ${v} <= ${e} )); do
         echo ${v}
         ((v=v+1))
      done
   elif (( ${e} < ${s} )); then
      v=${s}
      while (( ${v} >= ${e} )); do
         echo ${v}
         ((v=v-1))
      done
   fi
}

function test_num_range {
   num_range 1 3 | egrep "1|2|3" | assert_lc 3
   num_range 1 3 | head -1 | assert_eq 1
   num_range -1 1 | head -1 | assert_eq "-1"
   num_range 3 1 | egrep "1|2|3" | assert_lc 3
   num_range 3 1 | head -1 | assert_eq 3
   num_range 1 -1 | tail -1 | assert_eq "-1"
}
29
задан Kiquenet 13 June 2013 в 07:58
поделиться

7 ответов

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

62
ответ дан Daniel Kelley 13 June 2013 в 07:58
поделиться

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

15
ответ дан platon 13 June 2013 в 07:58
поделиться

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

<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 13 June 2013 в 07:58
поделиться

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

5
ответ дан daryal 13 June 2013 в 07:58
поделиться

Для 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 13 June 2013 в 07:58
поделиться

Новые функции в .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

1
ответ дан Kiquenet 13 June 2013 в 07:58
поделиться

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

using System.IO.Compression;

. Надеюсь, это кому-нибудь поможет

1
ответ дан Hugo Nava Kopp 13 June 2013 в 07:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: