MSBuild.Community.Tasks and Zip, установить структуру папок zip - PullRequest
2 голосов
/ 31 января 2012

У меня есть скрипт MSBuild, как показано ниже, который берет библиотеку классов Bin\Release\MyLib.dll и упаковывает ее в C:\1.zip.

При открытии zip-файла я вижу файл MyLib.dll в родительской папке.

Но мне бы хотелось иметь структуру каталогов в ZIP-файле, чтобы файл был заархивирован как lib\MyLib.dll

Как я могу это сделать?

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
    <Target Name="AfterBuild">
        <PropertyGroup>      
            <ReleasePath>bin\Release\</ReleasePath>
        </PropertyGroup>
    <ItemGroup>      
        <ReleaseApplicationFiles
            Include="$(ReleasePath)\**\*.*"
            Exclude="$(ReleasePath)\*vshost.exe*;$(ReleasePath)\*.pdb*" />
    </ItemGroup>
    <Zip Files="@(ReleaseApplicationFiles)" 
      WorkingDirectory="$(ReleasePath)"
      ZipFileName="c:\1.zip"
      ZipLevel="9" />
    </Target>

1 Ответ

4 голосов
/ 03 февраля 2012

Я бы:

  1. создал бы папку "lib"
  2. скопировал бы нужную DLL в папку "lib"
  3. заархивировал "lib"папка, которая теперь содержит DLL.

Вот код:

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
<Target Name="AfterBuild">
  <PropertyGroup>      
    <ReleasePath>bin\Release\</ReleasePath>
    <Zipup>c:\archive\bin</Zipup>
  </PropertyGroup>

  <ItemGroup>      
    <ReleaseApplicationFiles Include="$(ReleasePath)\**\*.*" Exclude="$(ReleasePath)\*vshost.exe*;$(ReleasePath)\*.pdb*" />
  </ItemGroup>

  <Exec Command="mkdir $(Zipup)" IgnoreExitCode="False"/>
  <Copy DestinationFolder="$(Zipup)" OverwriteReadOnlyFiles="True" SkipUnchangedFiles="False" SourceFiles="@(ReleaseApplicationFiles)" />

  <Zip Files="$(Zipup)" 
    WorkingDirectory="$(ReleasePath)"
    ZipFileName="c:\1.zip"
    ZipLevel="9" />

</Target>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...