2017-02-10 64 views
0

我正在處理自定義的msbuild腳本。 其中一個目標應該壓縮構建輸出。 例如着想,讓我們在這裏說的我有以下郵編內容不保留文件夾結構

<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> 

我使用**通配符選擇是Debug下的內容的MSBuild目標的路徑,輸出

C 
-Folder 
-------bin 
----------Debug 

。我可能有一些文件夾結構,其內容文件位於路徑下,需要保留。

因此,例如,Debug下可能有Resources文件夾,其中將包含一些.txt文件。這些應該壓縮保存結構,以便最終的.zip存檔文件包含Resources文件夾及其內容。

劇本我創建了保存完整的文件夾結構的MyItem.zip文件,所以我結束了在.zip文件下列

Folder 
------bin 
---------Debug 
--------------Contents 

我想實現的是在調試的內容.zip文件沒有保留文件夾結構直到調試(不包括)。 所以,我希望有.zip文件,結束了以下

MyItem.zip 
    ----------Content Folders (for example Resources) 
    -------------------------Content Files 
    ----------Files 

是否有任何優雅的方式來做到這一點?

我寧願不使用任何自定義的PowerShell腳本,並且如果可能的話,請使用MsBuild +社區任務提供的功能。

+0

從文檔:「工作目錄是ZIP文件的基本所有文件都會被從工作目錄親屬提出的。」聽起來像你的問題?嘗試離開工作目錄,或將其設置爲'$(MSBuildProjectDirectory)\ Folder \ bin \ Debug' – stijn

+1

@stijn就是這種情況!謝謝,作品像魅力!你能否把它作爲答案張貼,以便我可以標記它。 – Michael

回答

1

查看哪些服務以及爲社會任務文檔source

/// <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; } 

所以,如果你指定它會被用來確定的內容和你的情況「出發點」應該是workingdirectory

$(MSBuildProjectDirectory)\Folder\bin\Debug

相關問題