diff --git a/build/Microsoft.DotNet.Cli.Prepare.targets b/build/Microsoft.DotNet.Cli.Prepare.targets
index c8b6886f0..a39977cb8 100644
--- a/build/Microsoft.DotNet.Cli.Prepare.targets
+++ b/build/Microsoft.DotNet.Cli.Prepare.targets
@@ -130,9 +130,10 @@
- https://dotnetcli.azureedge.net/dotnet/$(CoreSetupChannel)
- $(CoreSetupBlobRootUrl)/Binaries/$(SharedFrameworkVersion)
- $(CoreSetupBlobRootUrl)/Installers
+ https://dotnetcli.azureedge.net/dotnet/
+ $(CoreSetupBlobRootUrl)$(CoreSetupChannel)
+ $(CoreSetupBlobRootUrlWithChannel)/Binaries/$(SharedFrameworkVersion)
+ $(CoreSetupBlobRootUrlWithChannel)/Installers
$(IntermediateDirectory)/coreSetupDownload/$(SharedFrameworkVersion)
$(CoreSetupDownloadDirectory)/combinedSharedHostAndFrameworkArchive
@@ -166,11 +167,74 @@
+
+
+
+ release/1.1.0
+ 1.1.0
+ 1.1.0
+ 1.1.0
+
+ $(CoreSetupBlobRootUrl)$(AdditionalCoreSetupChannel)
+ $(AdditionalCoreSetupBlobRootUrlWithChannel)/Binaries/$(AdditionalSharedFrameworkVersion)
+ $(AdditionalCoreSetupBlobRootUrlWithChannel)/Installers
+ $(IntermediateDirectory)/coreSetupDownload/$(AdditionalSharedFrameworkVersion)
+ $(AdditionalCoreSetupDownloadDirectory)/combinedSharedHostAndFrameworkArchive
+
+
+ dotnet-host-$(ProductMonikerRid).$(AdditionalSharedHostVersion)$(InstallerExtension)
+ $(PackagesDirectory)/$(AdditionalDownloadedSharedHostInstallerFileName)
+
+ dotnet-hostfxr-$(ProductMonikerRid).$(AdditionalHostFxrVersion)$(InstallerExtension)
+ $(PackagesDirectory)/$(AdditionalDownloadedHostFxrInstallerFileName)
+
+ dotnet-sharedframework-$(ProductMonikerRid).$(AdditionalSharedFrameworkVersion)$(InstallerExtension)
+ $(PackagesDirectory)/$(AdditionalDownloadedSharedFrameworkInstallerFileName)
+
+ dotnet-$(ProductMonikerRid).$(AdditionalSharedFrameworkVersion)$(ArchiveExtension)
+
+
+
+ <_DownloadAndExtractItem Include="AdditionalCombinedSharedHostAndFrameworkArchive"
+ Condition="!Exists('$(AdditionalCombinedSharedHostAndFrameworkArchive)')">
+ $(AdditionalSharedFrameworkArchiveBlobRootUrl)/$(AdditionalCombinedFrameworkHostCompressedFileName)
+ $(AdditionalCombinedSharedHostAndFrameworkArchive)
+ $(SharedFrameworkPublishDirectory)
+
+ False
+
+
+ <_DownloadAndExtractItem Include="AdditionalDownloadedSharedFrameworkInstallerFile"
+ Condition="!Exists('$(AdditionalDownloadedSharedFrameworkInstallerFile)') And '$(InstallerExtension)' != ''">
+ $(AdditionalCoreSetupInstallerBlobRootUrl)/$(AdditionalSharedFrameworkVersion)/$(AdditionalDownloadedSharedFrameworkInstallerFileName)
+ $(AdditionalDownloadedSharedFrameworkInstallerFile)
+
+
+
+ <_DownloadAndExtractItem Include="AdditionalDownloadedSharedHostInstallerFile"
+ Condition="!Exists('$(AdditionalDownloadedSharedHostInstallerFile)') And '$(InstallerExtension)' != ''">
+ $(AdditionalCoreSetupInstallerBlobRootUrl)/$(AdditionalSharedHostVersion)/$(AdditionalDownloadedSharedHostInstallerFileName)
+ $(AdditionalDownloadedSharedHostInstallerFile)
+
+
+
+ <_DownloadAndExtractItem Include="AdditionalDownloadedHostFxrInstallerFile"
+ Condition="!Exists('$(AdditionalDownloadedHostFxrInstallerFile)') And '$(InstallerExtension)' != ''">
+ $(AdditionalCoreSetupInstallerBlobRootUrl)/$(AdditionalHostFxrVersion)/$(AdditionalDownloadedHostFxrInstallerFileName)
+ $(AdditionalDownloadedHostFxrInstallerFile)
+
+
+
+
+ %(_DownloadAndExtractItem.OverwriteDestination)
+ True
+
+
@@ -178,12 +242,12 @@
+ OverwriteDestination="$(OverwriteExtractionDestination)" />
+ OverwriteDestination="$(OverwriteExtractionDestination)" />
-
diff --git a/build_projects/dotnet-cli-build/TarGzFileExtractToDirectory.cs b/build_projects/dotnet-cli-build/TarGzFileExtractToDirectory.cs
index b2575a22e..f5d70b9a7 100644
--- a/build_projects/dotnet-cli-build/TarGzFileExtractToDirectory.cs
+++ b/build_projects/dotnet-cli-build/TarGzFileExtractToDirectory.cs
@@ -42,12 +42,6 @@ namespace Microsoft.DotNet.Build.Tasks
Log.LogMessage(MessageImportance.Low, "'{0}' already exists, trying to delete before unzipping...", DestinationDirectory);
Directory.Delete(DestinationDirectory, recursive: true);
}
- else
- {
- Log.LogWarning("'{0}' already exists. Did you forget to set '{1}' to true?", DestinationDirectory, nameof(OverwriteDestination));
-
- retVal = false;
- }
}
if (!File.Exists(SourceArchive))
diff --git a/build_projects/dotnet-cli-build/ZipFileExtractToDirectory.cs b/build_projects/dotnet-cli-build/ZipFileExtractToDirectory.cs
index a17baf99a..aa78823f9 100644
--- a/build_projects/dotnet-cli-build/ZipFileExtractToDirectory.cs
+++ b/build_projects/dotnet-cli-build/ZipFileExtractToDirectory.cs
@@ -25,7 +25,7 @@ namespace Microsoft.DotNet.Build.Tasks
public string DestinationDirectory { get; set; }
///
- /// Indicates if the destination archive should be overwritten if it already exists.
+ /// Indicates if the destination directory should be cleaned if it already exists.
///
public bool OverwriteDestination { get; set; }
@@ -40,17 +40,37 @@ namespace Microsoft.DotNet.Build.Tasks
Log.LogMessage(MessageImportance.Low, "'{0}' already exists, trying to delete before unzipping...", DestinationDirectory);
Directory.Delete(DestinationDirectory, recursive: true);
}
- else
- {
- Log.LogWarning("'{0}' already exists. Did you forget to set '{1}' to true?", DestinationDirectory, nameof(OverwriteDestination));
- }
}
Log.LogMessage(MessageImportance.High, "Decompressing '{0}' into '{1}'...", SourceArchive, DestinationDirectory);
if (!Directory.Exists(Path.GetDirectoryName(DestinationDirectory)))
Directory.CreateDirectory(Path.GetDirectoryName(DestinationDirectory));
- ZipFile.ExtractToDirectory(SourceArchive, DestinationDirectory);
+ // match tar default behavior to overwrite by default
+ // Replace this code with ZipFile.ExtractToDirectory when https://github.com/dotnet/corefx/pull/14806 is available
+ using (ZipArchive archive = ZipFile.Open(SourceArchive, ZipArchiveMode.Read))
+ {
+ DirectoryInfo di = Directory.CreateDirectory(DestinationDirectory);
+ string destinationDirectoryFullPath = di.FullName;
+
+ foreach (ZipArchiveEntry entry in archive.Entries)
+ {
+ string fileDestinationPath = Path.GetFullPath(Path.Combine(destinationDirectoryFullPath, entry.FullName));
+
+ if (Path.GetFileName(fileDestinationPath).Length == 0)
+ {
+ // If it is a directory:
+ Directory.CreateDirectory(fileDestinationPath);
+ }
+ else
+ {
+ // If it is a file:
+ // Create containing directory:
+ Directory.CreateDirectory(Path.GetDirectoryName(fileDestinationPath));
+ entry.ExtractToFile(fileDestinationPath, overwrite: true);
+ }
+ }
+ }
}
catch (Exception e)
{