Search code examples
xmlmsbuilddirectoryteamcityworking-directory

MSBuild The "WorkingDirectory" parameter is not supported by the "Zip" task


In MSBuild the .xml file I have contains this:

 <Target Name="Zip">
<ItemGroup>
    <WorkingDirect Include="$(DeployDirectory)$(PackagePrefix)\$(PackageFolder)"/>
  </ItemGroup>
        <CreateItem Include="$(DeployDirectory)$(PackagePrefix)\$(PackageFolder)\*.*" >
                <Output ItemName="ZipFiles" TaskParameter="Include"/>
        </CreateItem>
<Message Text="@(WorkingDirect)" Importance="High" />
        <Zip ZipFileName="YourZipFile.zip" WorkingDirectory="@(WorkingDirect)" Files="@(ZipFiles)" />
</Target>

in forums it's been said that in order to zip the deploy packages I need to add above. But I am getting the following error:

[15:54:50][Zip] C:\TeamCity\buildAgent\work\c14fc97466c6d06e****cmss.xml(148, 44): error MSB4064: The "WorkingDirectory" parameter is not supported by the "Zip" task. Verify the parameter exists on the task, and it is a settable public instance property.
[15:54:50][Zip] C:\TeamCity\buildAgent\work\c14fc97466c6d06e****cmss.xml(148, 9): error MSB4063: The "Zip" task could not be initialized with its input parameters. 
[15:54:50][Step 1/1] Process exited with code 1

However in build.log it seems the parameter have been set correctly:

[Zip] C:\DeployPackages\**\20150725_155148

I have been searching quite long, please can anybody help me???

Thanks in advance...


Solution

  • All is well now; many thanks to my boss :) He sent me the link of the correct usage. For anyone who suffer from creating zip files from deploy packages: (http://www.msbuildextensionpack.com/help/3.5.14.0/index.html)

    <Project ToolsVersion="3.5" DefaultTargets="Default" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <TPath>$(MSBuildProjectDirectory)\..\MSBuild.ExtensionPack.tasks</TPath>
        <TPath Condition="Exists('$(MSBuildProjectDirectory)\..\..\Common\MSBuild.ExtensionPack.tasks')">$(MSBuildProjectDirectory)\..\..\Common\MSBuild.ExtensionPack.tasks</TPath>
      </PropertyGroup>
      <Import Project="$(TPath)"/>
      <Target Name="Default" DependsOnTargets="Sample1;Sample2"/>
      <Target Name="Sample1">
        <ItemGroup>
          <!-- Set the collection of files to Zip-->
          <FilesToZip Include="C:\Patches\**\*"/>
        </ItemGroup>
        <!-- Create a zip file based on the FilesToZip collection -->
        <MSBuild.ExtensionPack.Compression.Zip TaskAction="Create" CompressFiles="@(FilesToZip)" ZipFileName="C:\newZipByFile.zip"/>
        <MSBuild.ExtensionPack.Compression.Zip TaskAction="Create" Password="apassword" CompressionLevel="BestCompression" RemoveRoot="C:\Patches" CompressFiles="@(FilesToZip)" ZipFileName="C:\newZipByFileBestCompression.zip"/>
        <!-- Create a zip file based on a Path -->
        <MSBuild.ExtensionPack.Compression.Zip TaskAction="Create" CompressPath="C:\Patches" ZipFileName="C:\newZipByPath.zip"/>
        <!-- Extract a zip file-->
        <MSBuild.ExtensionPack.Compression.Zip TaskAction="Extract" ExtractPath="C:\aaa11\1" ZipFileName="C:\newZipByFile.zip"/>
        <MSBuild.ExtensionPack.Compression.Zip TaskAction="Extract" ExtractPath="C:\aaa11\2" ZipFileName="C:\newZipByPath.zip"/>
        <MSBuild.ExtensionPack.Compression.Zip TaskAction="Extract" Password="apassword"  ExtractPath="C:\aaa11\3" ZipFileName="C:\newZipByFileBestCompression.zip"/>
      </Target>
      <Target Name="Sample2">
        <PropertyGroup>
          <SourceDirectory>MotorData\</SourceDirectory>
        </PropertyGroup>
        <ItemGroup>
          <Files Include="$(SourceDirectory)*" Exclude="$(SourceDirectory).XYZ\**\*">
            <Group>Common</Group>
          </Files>
          <Files Include="$(SourceDirectory)Cars\*" Exclude="$(SourceDirectory)Cars\.XYZ\**\*">
            <Group>Cars</Group>
          </Files>
          <Files Include="$(SourceDirectory)Trucks\*" Exclude="$(SourceDirectory)Trucks\.XYZ\**\*">
            <Group>Trucks</Group>
          </Files>
        </ItemGroup>
        <!-- Create the output folder -->
        <ItemGroup>
          <OutputDirectory Include="output\"/>
        </ItemGroup>
        <MakeDir Directories="@(OutputDirectory)"/>
        <PropertyGroup>
          <WorkingDir>%(OutputDirectory.Fullpath)</WorkingDir>
        </PropertyGroup>
        <!-- Zip files based on the group they belong to -->
        <MSBuild.ExtensionPack.Compression.Zip TaskAction="Create" CompressFiles="@(Files)" ZipFileName="$(WorkingDir)%(Files.Group).zip"/>
      </Target>
    </Project>