private static void GetDeploymentBinaries(
DirectoryInfo targetAssemblyDirectory,
out Stream binariesStream,
out Stream hashesStream)
{
ZipArchive zipArchive = null;
StreamWriter hashesWriter = null;
try
{
binariesStream = new MemoryStream();
zipArchive = new ZipArchive(binariesStream, ZipArchiveMode.Create, leaveOpen: true);
hashesStream = new MemoryStream();
hashesWriter = new StreamWriter(hashesStream, Encoding.UTF8, 1024, leaveOpen: true);
ZipUtility.ZipRecursive(
targetAssemblyDirectory.FullName,
targetAssemblyDirectory,
zipArchive,
hashesWriter,
m_HashName);
hashesWriter.Flush();
hashesStream.Seek(0, SeekOrigin.Begin); // rewind the stream for the caller
}
finally
{
zipArchive.SafeDispose();
hashesWriter.SafeDispose();
}
// for some reason zipArchive isn't fully written to the stream until it is disposed
// (tried calling Flush on binariesStream and that didn't work)
// rewind the stream for the caller after the Dispose
binariesStream.Seek(0, SeekOrigin.Begin);
}