空のフォルダーを含むプリコンパイル済みサイトをコピー/圧縮して作成しようとしています (プリコンパイル後)。CreateItem タスクの後、空のフォルダーがアイテムのリストに含まれていないように見えます。空のフォルダを処理するにはどうすればよいですか?
ありがとう
空のフォルダーを含むプリコンパイル済みサイトをコピー/圧縮して作成しようとしています (プリコンパイル後)。CreateItem タスクの後、空のフォルダーがアイテムのリストに含まれていないように見えます。空のフォルダを処理するにはどうすればよいですか?
ありがとう
MSBuildは、アイテムの作成時に空のフォルダーを取得しません。空のフォルダーをアイテムに配置できるようにする場合は、タスク( MSBuild Extension PackのFindUnderタスクなど)を使用する必要があります。
イブラヒム橋見は言った
これが最も洗練されたソリューションだとは思いませんが、以前に行ったことは、ソリューション内にフォルダーを作成し、placeholder.txt などと呼ばれるテキスト ファイルを作成し、テキスト ファイルのプロパティを次のように設定することです。ビルドに含まれます。その結果、不要なファイルを含むフォルダーが作成されます。次に、すべてビルド スクリプト内で、placeholder.txt ファイルを削除してから圧縮します。
エレガントではありませんが、私たちのシナリオではうまくいきます。
空のフォルダをコピーするだけの場合は、execタスクを使用してRoboCopyを呼び出すことができます。空のフォルダを含む、コピーしようとしているツリー全体をミラーリングする引数/MIRを指定できます。
例:
<Exec Command="robocopy "$(SourceLocation)\" "$(TargetLocation)\" /MIR" IgnoreExitCode="true" />
同様に、execタスクを使用して、コマンドラインインターフェイスを備えた圧縮ユーティリティを呼び出して、空のフォルダーでzipを実行できます。
少しトリッキーかもしれませんが、すべてのファイルとフォルダーが共通のルートにあり、ワイルドカードを使用せずに (「.」を使用するだけで) そのルート フォルダーを 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>