我正在尝试复制/压缩一个预编译的网站,其中包含空文件夹(在预编译后)。看起来,在CreateItem任务后,空文件夹不会被包含在项目列表中。 我该如何处理空文件夹?
谢谢
我正在尝试复制/压缩一个预编译的网站,其中包含空文件夹(在预编译后)。看起来,在CreateItem任务后,空文件夹不会被包含在项目列表中。 我该如何处理空文件夹?
谢谢
当创建项目时,MSBuild不会收集空文件夹。如果您想将空文件夹放入项目中,您需要使用任务(例如来自MSBuild扩展包的FindUnder任务)。
Sayed Ibrahim Hashimi
我的书:Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build
如果只是复制空文件夹,您可以使用exec任务调用RoboCopy。您可以指定参数/MIR,它将镜像您试图复制的整个树,包括空文件夹。
示例:
<Exec Command="robocopy "$(SourceLocation)\" "$(TargetLocation)\" /MIR" IgnoreExitCode="true" />
这可能有点棘手,但我认为如果您的所有文件和文件夹都在一个共同的根目录中,并且您不使用通配符(只使用“.”),那么它应该可以工作:
<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>