我試圖創建複製/ zip包含空文件夾(預編譯後)的預編譯網站。看起來空文件夾不包含在CreateItem任務後的項目列表中。 我如何照顧空文件夾?MSBuild:通過Zip/Copy任務添加/複製空文件夾
感謝
我試圖創建複製/ zip包含空文件夾(預編譯後)的預編譯網站。看起來空文件夾不包含在CreateItem任務後的項目列表中。 我如何照顧空文件夾?MSBuild:通過Zip/Copy任務添加/複製空文件夾
感謝
我不覺得這是最完美的解決方案,但我們以前做過就是建立在解決方案的文件夾,並呼籲placeholder.txt或類似的文本文件,並設置要包含在構建中的文本文件的屬性。結果是一個您希望它包含您不需要的文件的文件夾。然後,我們在將其壓縮之前刪除placeholder.txt文件,所有這些都在構建腳本中完成。
不算優雅,但它爲我們的方案做了工作。
創建項目時,MSBuild不會拾取空文件夾。如果您希望能夠將空文件夾放入項目中,則必須使用任務(如來自MSBuild Extension Pack的FindUnder任務)。
賽義德·易卜拉欣·哈希米
的My Book:Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build
對於剛剛複製空文件夾,你可以使用一個exec任務調用ROBOCOPY。您可以指定參數/ MIR,它將鏡像您嘗試複製的整個樹,包括空文件夾。
例子:
<Exec Command="robocopy "$(SourceLocation)\" "$(TargetLocation)\" /MIR" IgnoreExitCode="true" />
同樣,你可以使用一個exec任務調用,有一個命令行界面,實現與空文件夾的zip壓縮實用程序。
它可能是一個有點棘手,但我認爲它的工作原理,如果您的所有文件和文件夾都在一個共同的根,你是壓縮根文件夾,而無需使用通配符(只用「」):
<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>