如何在 MSBuild 中压缩输出文件夹?对于文件名,我需要使用在其他地方设置的变量。
问问题
6687 次
2 回答
7
“MSBuild.Community.Tasks.Zip”是一种方式。未定义 WorkingCheckout 和 OutputDirectory。
但是你可以得到下面的漂移。
下面将获取我的 zip 中所有不是 .config 文件的文件。
注意“主机”是我的自定义 csproj 文件夹名称,您的会有所不同。
<ItemGroup>
<ZipFilesHostNonConfigExcludeFiles Include="$(WorkingCheckout)\Host\bin\$(Configuration)\**\*.config" />
</ItemGroup>
<!-- -->
<ItemGroup>
<ZipFilesHostNonConfigIncludeFiles Include="$(WorkingCheckout)\Host\bin\$(Configuration)\**\*.*" Exclude="@(ZipFilesHostNonConfigExcludeFiles)" />
</ItemGroup>
<MSBuild.Community.Tasks.Zip Files="@(ZipFilesHostNonConfigIncludeFiles)" ZipFileName="$(OutputDirectory)\MyZipFileNameHere_$(Configuration).zip" WorkingDirectory="$(WorkingCheckout)\Host\bin\$(Configuration)\" />
<!-- -->
这是另一个主流选项:
于 2013-04-10T13:26:13.507 回答
4
如果要打包所有文件而不保留文件夹结构。
<ItemGroup>
<ZipFiles Include="$(OutDir)\**\*.*" />
</ItemGroup>
<Target Name="AfterBuild" Condition="'$(Configuration)'=='Release'">
<Zip ZipFileName="$(OutDir)\output.zip" WorkingDirectory="$(OutDir)" Files="@(ZipFiles)" Flatten="True" Quiet="true" />
</Target>
如果要保留文件夹结构
<Target Name="AfterBuild" Condition="'$(Configuration)'=='Release'">
<Zip ZipFileName="$(OutDir)\output.zip" WorkingDirectory="$(OutDir)" Files="@(ZipFiles)" Flatten="False" Quiet="true" />
</Target>
Flatten="True" 表示将删除所有目录并将文件放在 zip 文件的根目录下。
WorkingDirectory是 zip 文件的基础。所有文件都将与工作目录相对。
于 2018-07-03T07:19:37.453 回答