我是 Visual Studio 编程的新手。
我最近将 .Net 4.0 升级到 4.5,以便使用 System.IO.Compression 下的 ZipFile 类,但安装完成后,Visual Studio(我使用的是 2012)仍然无法将 ZipFile 识别为类名。
我确保 .Net 4.5 出现在控制面板程序列表中,并且我的 C# 解决方案将 .Net Framework 4 设置为目标框架。
有人可以帮我解决这个问题吗?
我是 Visual Studio 编程的新手。
我最近将 .Net 4.0 升级到 4.5,以便使用 System.IO.Compression 下的 ZipFile 类,但安装完成后,Visual Studio(我使用的是 2012)仍然无法将 ZipFile 识别为类名。
我确保 .Net 4.5 出现在控制面板程序列表中,并且我的 C# 解决方案将 .Net Framework 4 设置为目标框架。
有人可以帮我解决这个问题吗?
请参阅MSDN 上的ZipFile 类。它显示所需的框架版本是 4.5。修复框架版本后,检查您是否添加了对System.IO.Compression.FileSystem.dll
程序集的引用并向您的类添加了 usingSystem.IO.Compression
指令。
您还需要引用 System.IO.Compression.FileSystem.dll 程序集。
只是为了进一步澄清前面的答案,这里是如何手动将引用添加到 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 的必要信息。
您需要将当前项目的目标框架从.Net 4 更改为.Net 4.5。
.NET 4.5 中的新功能
Zip 压缩改进以减小压缩文件的大小。请参阅 System.IO.Compression 命名空间。
添加System.IO.Compression程序集作为对您项目的引用。您可能还希望引用System.IO.Compression.FileSystem程序集来访问ZipArchive 类的三个扩展方法(来自 ZipFileExtensions 类) :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开箱即用
对于 Windows Phone 8.1,使用 NuGet 将 Microsoft 压缩包添加到您的项目并引用它。
如果您有一个较旧的 WP8 项目,您可能使用了不同的包,该包会与 WP8.1 附带的 .NET 4.5 的一部分的 System.IO.Compression dll 产生冲突。您需要摆脱它并使用与 .NET 4.5 协调工作的 Microsoft Compression。我就是这样过来的!
在我的情况下,我需要手动删除所有以System.IO.Compression开头的 dll 引用,然后一一添加所需的引用(System.IO.Compression.FileSystem等),即使我只写了一个 using 语句
using System.IO.Compression;
我希望这可以帮助别人