使用SharpZipLib更新zip - 如果条目名称包含文件夹,则会出现问题

时间:2011-11-10 17:54:19

标签: c# zip sharpziplib

这是我更新现有zip的代码,调用者传入ZipFile并有一个finally块来关闭zip文件。

    private static void AddFiles(ZipFile zipFile, string path, string filesEntryLocation, string pattern = @"*") {

        zipFile.BeginUpdate();

        string[] files = Directory.GetFiles(path, pattern);

        foreach (string filename in files) {
            zipFile.Add(filename, (filesEntryLocation + filename.Split(new[] { '\\' }).Last()).Replace('\\','/'));
        }



        zipFile.CommitUpdate();
    }

正如您所看到的,我正在将条目添加到zip中,并将entryname设置为zip文件夹层次结构的特定部分。

我们这样做是为了将产品注入“框架”Web包 - 该框架支持松散耦合的产品。

结果zip很好,我可以在Windows中导航它,我可以提取它... 但MSDeploy出现了,而且新的条目导致了zip文件夹层次结构的添加,我从msdeploy那里得到错误,说它无法打开zip - 但只是在那个特定的情况下,即zip没有完全损坏,它只是在msdeploy的地方开始导航完成一个'新'文件夹。

现在,如果我提取更改后的zip,然后重新压缩它(使用7zip),并要求msdeploy执行该操作 - 没有问题。

SO - 这是SharpZipLib,还是我在添加zip文件夹层次结构时做错了什么?

1 个答案:

答案 0 :(得分:0)

您还应该添加要归档的文件夹条目(如果它们之前不存在)。