如何使用MSBuild扩展的Zip任务?

时间:2012-10-05 15:06:13

标签: .net msbuild

我决定使用MSBuild Extension的Zip任务在每次构建时压缩我的一些源代码。

然而,这不起作用:

<UsingTask TaskName="MSBuild.ExtensionPack.Compression.Zip" AssemblyFile="MSBuild.ExtensionPack.dll" />
<Target Name="AfterBuild">
    <CallTarget Targets="ZipSourceFiles" />
</Target>
<Target Name="ZipSourceFiles" Condition="'$(ConfigTransform)'=='ImRunningOnTheServer'">
    <MSBuild.ExtensionPack.Compression.Zip TaskAction="Create" CompressFiles="c:\source.txt" ZipFileName="C:\target.zip"/>
</Target>

我收到以下错误消息:

  

找不到“MSBuild.ExtensionPack.Compression.Zip”任务。请检查以下内容:1。)项目文件中任务的名称与任务类的名称相同。 2.)任务类是“public”并实现Microsoft.Build.Framework.ITask接口。 3.)在项目文件或位于“c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319”目录中的* .tasks文件中正确声明了任务。

我不知道导致此错误的原因是什么?有什么想法吗?

2 个答案:

答案 0 :(得分:33)

MSBuild Community Tasks的示例:

<Import Project="lib\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />

<Target Name="Zip">
        <CreateItem Include="YourSourceFolder\*.*" >
                <Output ItemName="ZipFiles" TaskParameter="Include"/>
        </CreateItem>
        <Zip ZipFileName="YourZipFile.zip" WorkingDirectory="YourSourceFolder" Files="@(ZipFiles)" />
</Target>

如果您需要更多示例,请参阅我的某个项目中的here is a complete working MSBuild file

答案 1 :(得分:7)

这是MSBuild Community Tasks的替代方案。如果您使用的是.net 4.5.1,则可以将System.IO.Compression函数嵌入UsingTask。此示例使用ZipFile.CreateFromDirectory

0s