C# System.IO.打包库不读取标准windows zip文件

C# System.IO.打包库不读取标准windows zip文件,c#,.net,c++-cli,zip,unzip,C#,.net,C++ Cli,Zip,Unzip,使用System.IO.Packaging程序集读取zip包时,我发现使用标准windows zip实用程序创建的zip文件无法读取(zip包的包部件(内部文件)显示为不存在) 在做了一些研究之后,这似乎是因为System.IO.Packaging库在创建zip时向zip添加了Content\u Types.xml,而标准的windows压缩zip中似乎没有此功能 例如: using (Package Zip = Package.Open(BundlePath, FileMode.Open))

使用
System.IO.Packaging
程序集读取zip包时,我发现使用标准windows zip实用程序创建的zip文件无法读取(zip包的包部件(内部文件)显示为不存在)

在做了一些研究之后,这似乎是因为
System.IO.Packaging
库在创建zip时向zip添加了Content\u Types.xml,而标准的windows压缩zip中似乎没有此功能

例如:

using (Package Zip = Package.Open(BundlePath, FileMode.Open))
{
    Uri FileUri = PackUriHelper.CreatePartUri(new Uri("somefile.xml", UriKind.Relative));
    if (!Zip.PartExists (FileUri ))  //this fails even though the file exists in the zip
        throw new ResourceException(String.Format("Zip {0} does not contain file", BundlePath));
    ...
是否仍然需要使用.NET提供的打包系统来读取标准zip文件,还是需要使用库来创建这些文件

编辑:

手动添加此文件(Content_Types.xml)并使用Windows压缩实用程序压缩,可以成功地读取包


谢谢。

System.IO。打包不是用来读取zip文件,而是用来读取包。改为使用。

System.IO。打包不是用来读取zip文件,而是用来读取包。请改用。

不幸的是,我相信您是正确的。没有一种好方法可以让System.IO.Packaging库以标准zip格式打开任何不包含[content\u types].xml文件的文件

几个月前我一直在研究这个问题,在我们决定最初从.NET中生成所有文件之前,我正试图实现一些东西来注入这个文件:

具体内容如下

(--文件1----)(--文件2----)…(--文件x----)(目录)

如果没有第三方库,您应该能够将zip文件作为二进制文件打开,跳到末尾并读取该目录,在末尾添加一个带有类型/默认扩展名信息的[content\u types].xml文件,调整目录条目,将其附加到文件末尾,然后继续。我在尝试实现这一点时遇到的问题是,文件上有各种校验和,用于验证文件是否已损坏,在我需要更改此文件的方向时,我还没有获得所有校验和


我相信这是您需要的更多信息,但如果您决定实施自己的解决方案,希望这会有所帮助。

不幸的是,我相信您是正确的,没有一种好方法可以让System.IO.Packaging库以标准zip格式打开任何不包含[content\u types].xml文件的文件

几个月前我一直在研究这个问题,在我们决定最初从.NET中生成所有文件之前,我正试图实现一些东西来注入这个文件:

具体内容如下

(--文件1----)(--文件2----)…(--文件x----)(目录)

如果没有第三方库,您应该能够将zip文件作为二进制文件打开,跳到末尾并读取该目录,在末尾添加一个带有类型/默认扩展名信息的[content\u types].xml文件,调整目录条目,将其附加到文件末尾,然后继续。我在尝试实现这一点时遇到的问题是,文件上有各种校验和,用于验证文件是否已损坏,在我需要更改此文件的方向时,我还没有获得所有校验和


我相信这是您需要的更多信息,但如果您决定实施自己的解决方案,希望这会有所帮助。

什么是“标准windows zip实用程序”?@Oded-windows XP、windows 7、etcI附带的默认压缩实用程序将再次询问,因为我不知道XP中有哪一台。@Oded-也许我错认为XP中有一台,因为我前面没有XP机器。我目前正在使用Windows 7。@leaf dev:这已经很晚了,但是在Windows资源管理器的上下文菜单中操作的“发送到=>压缩文件夹”是默认实用程序的一部分。我知道它在WindowsVista和Windows7中都有。我想它在XP中也默认存在,但我已经很久没有重新安装XP了。什么是“标准windows zip实用程序”@Oded-windows XP、windows 7、etcI附带的默认压缩实用程序会再次询问,因为我不知道XP中有哪一台。@Oded-也许我错认为XP中有一台,因为我前面没有XP机器。我目前正在使用Windows 7。@leaf dev:这已经很晚了,但是在Windows资源管理器的上下文菜单中操作的“发送到=>压缩文件夹”是默认实用程序的一部分。我知道它在WindowsVista和Windows7中都有。我认为它在XP中也是默认的,但是我已经很久没有重新安装XP了。