私はカスタムmsbuildスクリプトを作成しています。 ターゲットの1つがビルド出力を圧縮する必要があります。のは、ここに言わせて例のために は私がDebug
下にあるコンテンツを選択するために、**
ワイルドカードを使用していフォルダ構造を保持しないZipコンテンツ
<Target Name="ZipFiles">
<ItemGroup>
<Binaries Include="$(MSBuildProjectDirectory)\Folder\bin\Debug\**" />
</ItemGroup>
<MakeDir Directories="$(MSBuildProjectDirectory)\Build\Output"
Condition="!Exists('$(MSBuildProjectDirectory)\Build\Output')" />
<Zip Files="@(Binaries)"
WorkingDirectory="$(MSBuildProjectDirectory)\Build\Output\"
ZipFileName="$(MSBuildProjectDirectory)\Build\Output\MyItems.zip"
ZipLevel="9" />
</Target>
MSBuildのは、ターゲットと、次のしている出力
C
-Folder
-------bin
----------Debug
へのパスです。私は、保存する必要があるパスの下にあるコンテンツファイルを含むいくつかのフォルダ構造を持つかもしれません。
たとえば、Debug
の下にResources
というフォルダがあり、これにはいくつかのファイルが含まれています(.txt
)。これらのファイルは構造体を保存するように圧縮されている必要があります。最終的な.zipアーカイブファイルには内容があるResources
フォルダが含まれます。
私が持っているスクリプトが保存され、完全なフォルダ構造を持つMyItem.zipファイルを作成しますので、私は.zipファイルに次のように終わる
Folder
------bin
---------Debug
--------------Contents
私は何を達成したいことでデバッグの内容を持つことです.zipファイルを除き、フォルダ構造をデバッグ(除外)まで保存します。 は、だから私は
MyItem.zip
----------Content Folders (for example Resources)
-------------------------Content Files
----------Files
と次のように.zipファイルで終わるしたい、それを行うための任意のエレガントな方法はありますか?
カスタムPowerShellスクリプトを使用しないことをお勧めします。可能であれば、MsBuild +コミュニティタスクで提供するものを使用することをお勧めします。だから、あなたはあるべきコンテンツのためとあなたのケースで「開始点」を決定するために使用されますWORKINGDIRECTORYを指定した場合
/// <summary>
/// Gets or sets the working directory for the zip file.
/// </summary>
/// <value>The working directory.</value>
/// <remarks>
/// The working directory is the base of the zip file.
/// All files will be made relative from the working directory.
/// </remarks>
public string WorkingDirectory { get; set; }
を:
ドキュメントから:「作業ディレクトリzipファイルのベースであるすべてのファイルは、作業ディレクトリからの相対行われます。」あなたの問題のように聞こえる?作業ディレクトリを残してみるか、 '$(MSBuildProjectDirectory)\ Folder \ bin \ Debug'に設定してください。 – stijn
@stijnそうです!ありがとう、魅力のような作品!私はそれをマークすることができるように答えとして投稿してください。 – Michael