这是我更新现有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文件夹层次结构时做错了什么?
答案 0 :(得分:0)
您还应该添加要归档的文件夹条目(如果它们之前不存在)。