2009-06-24 24 views
6

空のフォルダを含む事前コンパイル済みのサイトをコピー/ジップ(プレコンパイル後)に作成しようとしています。空のフォルダは、CreateItemタスクの後にアイテムのリストに含まれていないように見えます。 空のフォルダはどうやって管理できますか?MSBuild:Zip/Copyタスク経由で空のフォルダを追加/コピーする

おかげ

答えて

4

私はこれが最もエレガントなソリューションであることを、私たちは、溶液中のフォルダを作成し、前でやっている、と感じることはありませんplaceholder.txtまたは類似のものと呼ばれるテキストファイル、およびビルドに含めるテキストファイルのプロパティを設定します。結果は、不要なファイルを格納するフォルダになります。次に、zipファイルを削除する前にplaceholder.txtファイルを削除します。すべてがビルドスクリプト内にあります。

わかりやすいですが、私たちのシナリオではうまくいきます。

1

ちょうどあなたがRobocopyをを呼び出すには、execタスクを使用することができます空のフォルダをコピーします。空のフォルダを含め、コピーしようとしているツリー全体を反映する引数/ MIRを指定できます。

例:

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

同様に、あなたは空のフォルダとジッパーを達成するためのコマンドラインインターフェイスを持っている圧縮ユーティリティを呼び出すには、execタスクを使用することができます。

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> 
関連する問題