2017-02-10 4 views
0

私はカスタム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; } 

を:

+0

ドキュメントから:「作業ディレクトリzipファイルのベースであるすべてのファイルは、作業ディレクトリからの相対行われます。」あなたの問題のように聞こえる?作業ディレクトリを残してみるか、 '$(MSBuildProjectDirectory)\ Folder \ bin \ Debug'に設定してください。 – stijn

+1

@stijnそうです!ありがとう、魅力のような作品!私はそれをマークすることができるように答えとして投稿してください。 – Michael

答えて

1

はうまくコミュニティタスクのドキュメントとしての役割を果たすsourceを参照してください。

$(MSBuildProjectDirectory)\Folder\bin\Debug

関連する問題