我发现使用 MSBuild Community Tasks 提供的 Zip 任务创建 zip 文件会更改(或者更确切地说,删除)正在压缩的文件的任何文件属性。这是我对 Attrib 任务的调用之一,以使文件夹内的 DLL 具有只读属性:
<Attrib ReadOnly="true" Normal="true" Files="@(DLLsToReadOnly)" />
接下来,我将这些 DLL 包含在 FilesToZip 项中,并调用了以下内容:
<Zip Files="@(FilesToZip)" WorkingDirectory="$(Directory with files)" ZipFileName="$(DropLocation)\$(Zip file name).zip" />
在检查提取的文件后,我发现没有一个 DLL 具有只读属性(更不用说任何)。查看 Zip 任务从中抓取文件的 DLL 文件夹显示 DLL 具有属性 R(用于只读)。
在阅读了文档和源代码之后,我找不到任何可以设置来告诉任务保留文件属性的属性。有没有我可以使用的替代品来保持文件属性完整?我曾尝试查看 ICSharpCode.SharpZipLib,因为社区任务源中的 Zip 类引用了它,但到目前为止,我还没有从中获得太多收益。
(我正在使用社区任务版本 1.2.0.306)