使用SharpZipLib更新一个坏的东西,如果条目名称包含文件夹
本文关键字:如果 文件夹 包含 更新 SharpZipLib 一个 使用 | 更新日期: 2023-09-27 18:14:10
这是我更新现有zip的代码,调用者传入ZipFile并有一个finally块来关闭ZipFile。
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包中——框架支持松耦合的产品。
结果压缩是好的,我可以在Windows中导航它,我可以提取它…但是MSDeploy出现了,每当一个新的条目导致zip文件夹层次结构的增加,我从MSDeploy得到错误,说它无法打开zip -但只有在特定的,即zip没有完全损坏,它只有在MSDeploy开始导航做一个"新"文件夹。
现在,如果我提取更改的zip,然后重新压缩它(使用7zip),并要求msdeploy对其执行-没问题,它可以工作。
SO -这是SharpZipLib,还是我在添加到zip文件夹层次结构中做错了什么?
您还应该将文件夹条目添加到存档中(如果它们以前不存在)。