MSBuild:通过Zip/Copy任务添加/复制空文件夹

6

我正在尝试复制/压缩一个预编译的网站,其中包含空文件夹(在预编译后)。看起来,在CreateItem任务后,空文件夹不会被包含在项目列表中。 我该如何处理空文件夹?

谢谢

4个回答

4
我认为这不是最优雅的解决方案,但我们之前做过的方法是,在解决方案中创建一个文件夹和一个名为placeholder.txt或类似名称的文本文件,并设置文本文件的属性以包含在构建中。结果是您想要的文件夹中包含一个不需要的文件。然后我们在构建脚本中删除placeholder.txt文件并将其压缩。虽然不太优雅,但对于我们的情况来说可以胜任。

4

1

如果只是复制空文件夹,您可以使用exec任务调用RoboCopy。您可以指定参数/MIR,它将镜像您试图复制的整个树,包括空文件夹。

示例:

<Exec Command="robocopy &quot;$(SourceLocation)\&quot; &quot;$(TargetLocation)\&quot; /MIR" IgnoreExitCode="true" />

同样地,您可以使用exec任务调用一个具有命令行界面的压缩实用程序来实现带有空文件夹的zip。

0

这可能有点棘手,但我认为如果您的所有文件和文件夹都在一个共同的根目录中,并且您不使用通配符(只使用“.”),那么它应该可以工作:

<PropertyGroup>
    <SourcePath>.\path\to\rootFolder</SourcePath>
    <FinalZipFileName>.\path\to\destination\myzip.zip</FinalZipFileName>
</PropertyGroup>

<Target Name="MyApplicationZip" >
    <Zip ZipFileName="$(FinalZipFileName)" WorkingDirectory="$(SourcePath)" Files="$(SourcePath)\." ZipLevel="9" />
</Target>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接