Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <UsingTask TaskName="NativeZip" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
- <ParameterGroup>
- <InputFileNames ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
- <OutputFileName ParameterType="System.String" Required="true" />
- <OverwriteExistingFile ParameterType="System.Boolean" Required="false" />
- <Flatten ParameterType="System.Boolean" Required="false" />
- <RemoveRoot ParameterType="System.String" Required="false" />
- </ParameterGroup>
- <Task>
- <Reference Include="System.IO.Compression" />
- <Using Namespace="System.IO.Compression" />
- <Code Type="Fragment" Language="cs">
- <![CDATA[
- var fileMode = OverwriteExistingFile ? FileMode.Create : FileMode.CreateNew;
- Directory.CreateDirectory(Path.GetDirectoryName(OutputFileName));
- using (var archive = new ZipArchive(new FileStream(OutputFileName, fileMode), ZipArchiveMode.Create))
- {
- foreach (var inputFileName in InputFileNames.Select(f => f.ItemSpec))
- {
- var archiveName = Flatten ? Path.GetFileName(inputFileName) : (String.IsNullOrEmpty(RemoveRoot) ? inputFileName : inputFileName.Replace(RemoveRoot, ""));
- var archiveEntry = archive.CreateEntry(archiveName);
- using (var fs = new FileStream(inputFileName, FileMode.Open))
- {
- using (var zipStream = archiveEntry.Open())
- {
- fs.CopyTo(zipStream);
- }
- }
- }
- }
- ]]>
- </Code>
- </Task>
- </UsingTask>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement