我正在开发自定义的msbuild脚本。 其中一个目标应该压缩构建输出。 为了举例,我们在这里说出输出路径
C
-Folder
-------bin
----------Debug
我有跟随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
下的内容。我可能在路径中有一些内容文件的文件夹结构,需要保留。
例如,Resources
下可能有Debug
个文件夹,其中包含一些.txt
个文件。这些应该是压缩保留结构,以便最终的.zip存档文件包含Resources
文件夹及其内容。
脚本我创建了一个保留完整文件夹结构的MyItem.zip文件,所以我最终在.zip文件中跟随
Folder
------bin
---------Debug
--------------Contents
我想要实现的是在.zip文件中保存Debug的内容,而保留文件夹结构直到Debug(不包括)。 所以我希望以。
结束.zip文件 MyItem.zip
----------Content Folders (for example Resources)
-------------------------Content Files
----------Files
有没有优雅的方法呢?
我更不希望使用任何自定义PowerShell脚本,如果可能,请使用MsBuild +社区任务提供的内容。
答案 0 :(得分: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; }
因此,如果您指定了工作目录,它将用于确定内容的“起点”,在您的情况下应该
$(MSBuildProjectDirectory)\Folder\bin\Debug