0

For some reason my files are not excluded:

  <Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Zip'">
    <ItemGroup>
      <ZipFiles Include="$(OutDir)\*.*" Exclude="*.nupkg;*.vshost.*;*.xml;*.pdb;*.snk*;Squirrel.dll;NuGet.Squirrel.dll;Splat.dll;DeltaCompressionDotNet.*;Mono.*" />
    </ItemGroup>
    <Message Importance="High" Text="Result files: @(ZipFiles)" />
    <Zip Files="@(ZipFiles)" WorkingDirectory="$(OutDir)" ZipFileName="../Releases/HotsApi.zip" ZipLevel="9" />
  </Target>

Output:

Result files: bin\Zip\DeltaCompressionDotNet.dll;bin\Zip\DeltaCompressionDotNet.MsDelta.dll;bin\Zip\DeltaCompressionDotNet.PatchApi.dll;bin\Zip\Heroes.ReplayParser.netstandard.dll;bin\Zip\Heroes.ReplayParser.netstandard.pdb;bin\Zip\Hotsapi.Uploader.Common.dll;bin\Zip\Hotsapi.Uploader.Common.pdb;bin\Zip\Hotsapi.Uploader.exe;bin\Zip\Hotsapi.Uploader.exe.config;bin\Zip\Hotsapi.Uploader.pdb;bin\Zip\Mono.Cecil.dll;bin\Zip\Mono.Cecil.Mdb.dll;bin\Zip\Mono.Cecil.Pdb.dll;bin\Zip\Mono.Cecil.Rocks.dll;bin\Zip\MpqTool.netstandard.dll;bin\Zip\MpqTool.netstandard.pdb;bin\Zip\Newtonsoft.Json.dll;bin\Zip\Nito.AsyncEx.Coordination.dll;bin\Zip\Nito.AsyncEx.Tasks.dll;bin\Zip\Nito.Collections.Deque.dll;bin\Zip\Nito.Disposables.dll;bin\Zip\NLog.config;bin\Zip\NLog.dll;bin\Zip\NuGet.Squirrel.dll;bin\Zip\NuGet.Squirrel.pdb;bin\Zip\SharpCompress.dll;bin\Zip\Splat.dll;bin\Zip\Splat.pdb;bin\Zip\Squirrel.dll;bin\Zip\Squirrel.pdb;bin\Zip\System.Collections.Immutable.dll

It looks like MSBuild ignores my Exclude clause. What am I doing wrong?

Poma
  • 8,174
  • 18
  • 82
  • 144
  • there was an issue about a year ago where wild-cards failed to work as intended. some used a regex expression to get a round this bug but unsure if this is still a known bug or not right now... – jazb Dec 03 '18 at 07:11
  • 1
    similar question but quite old: https://stackoverflow.com/questions/45964967/msbuild-itemgroup-exclude-doesnt-work-with-wildcards – jazb Dec 03 '18 at 07:13

1 Answers1

2

The exclude patterns need to match the search pattern on a per-directory basis, so what you want is

Exclude="**\*.nupkg;**\*.pdb;…"
Martin Ullrich
  • 94,744
  • 25
  • 252
  • 217