6

空のフォルダーを含むプリコンパイル済みサイトをコピー/圧縮して作成しようとしています (プリコンパイル後)。CreateItem タスクの後、空のフォルダーがアイテムのリストに含まれていないように見えます。空のフォルダを処理するにはどうすればよいですか?

ありがとう

4

4 に答える 4

4

MSBuildは、アイテムの作成時に空のフォルダーを取得しません。空のフォルダーをアイテムに配置できるようにする場合は、タスク( MSBuild Extension PackのFindUnderタスクなど)を使用する必要があります。

イブラヒム橋見は言った

私の本:Microsoftビルドエンジンの内部:MSBuildとTeamFoundationビルドの使用

于 2009-06-24T18:35:17.750 に答える
4

これが最も洗練されたソリューションだとは思いませんが、以前に行ったことは、ソリューション内にフォルダーを作成し、placeholder.txt などと呼ばれるテキスト ファイルを作成し、テキスト ファイルのプロパティを次のように設定することです。ビルドに含まれます。その結果、不要なファイルを含むフォルダーが作成されます。次に、すべてビルド スクリプト内で、placeholder.txt ファイルを削除してから圧縮します。

エレガントではありませんが、私たちのシナリオではうまくいきます。

于 2009-06-24T16:51:48.037 に答える
1

空のフォルダをコピーするだけの場合は、execタスクを使用してRoboCopyを呼び出すことができます。空のフォルダを含む、コピーしようとしているツリー全体をミラーリングする引数/MIRを指定できます。

例:

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

同様に、execタスクを使用して、コマンドラインインターフェイスを備えた圧縮ユーティリティを呼び出して、空のフォルダーでzipを実行できます。

于 2011-04-12T23:41:29.677 に答える
0

少しトリッキーかもしれませんが、すべてのファイルとフォルダーが共通のルートにあり、ワイルドカードを使用せずに (「.」を使用するだけで) そのルート フォルダーを 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>
于 2016-02-05T12:10:14.103 に答える