diff --git a/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets b/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets
index e2b2bfbc0..54e67a46e 100644
--- a/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets
+++ b/build/compile/Microsoft.DotNet.Cli.LzmaArchive.targets
@@ -21,7 +21,7 @@
- $(CoreSetupChannel)/Binaries/$(SharedFrameworkVersion)/$([System.String]::Copy('%(Filename)%(Extension)').Replace('\' ,'/'))
+ $(NugetPackagesArchiveRelativeBlobUrl)/$([System.String]::Copy('%(Filename)%(Extension)').Replace('\' ,'/'))
@@ -61,20 +61,33 @@
+
+
+
+
-
-
+
+
+ WorkingDirectory="$(NuGetPackagesArchiveProject)/Web" />
+ WorkingDirectory="$(NuGetPackagesArchiveProject)/Web" />
+
+
+
+
@@ -89,7 +102,7 @@
+ DependsOnTargets="Prepare;SetupStage;SetupAzureBlobInformation">
nuGetPackagesArchive.$(NuGetPackagesArchiveVersion).lzma
$(IntermediateDirectory)/NuGetPackagesArchiveProject
@@ -97,7 +110,8 @@
$(ToolsOutputDirectory)/Archiver.dll
$(IntermediateDirectory)/$(NugetPackagesArchiveName)
$(Stage2Directory)/sdk/$(SdkVersion)/nuGetPackagesArchive.lzma
- $(SharedFrameworkArchiveBlobRootUrl)/$(NugetPackagesArchiveName)
+ $(Product)/NuGetPackagesArchives
+ $(DotnetBlobRootUrl)/$(NugetPackagesArchiveRelativeBlobUrl)/$(NugetPackagesArchiveName)
\ No newline at end of file
diff --git a/build_projects/dotnet-cli-build/GenerateNuGetPackagesArchiveVersion.cs b/build_projects/dotnet-cli-build/GenerateNuGetPackagesArchiveVersion.cs
index e05d0a407..fffa5213e 100644
--- a/build_projects/dotnet-cli-build/GenerateNuGetPackagesArchiveVersion.cs
+++ b/build_projects/dotnet-cli-build/GenerateNuGetPackagesArchiveVersion.cs
@@ -24,29 +24,39 @@ namespace Microsoft.DotNet.Cli.Build
[Output]
public String Version { get; set; }
+ private static string[] s_TemplatesToArchive = new string[]
+ {
+ "CSharp_Web",
+ "CSharp_Web1.1",
+ };
+
public override bool Execute()
{
- var webTemplatePath = Path.Combine(
- RepoRoot,
- "src",
- "dotnet",
- "commands",
- "dotnet-new",
- "CSharp_Web",
- "$projectName$.csproj");
-
- var rootElement = ProjectRootElement.Open(webTemplatePath);
- var packageRefs = rootElement.Items.Where(i => i.ItemType == "PackageReference").ToList();
-
var dataToHash = string.Empty;
- foreach (var packageRef in packageRefs)
+
+ foreach (string templateToArchive in s_TemplatesToArchive)
{
- dataToHash += $"{packageRef.Include},";
- if (packageRef.HasMetadata)
+ var templatePath = Path.Combine(
+ RepoRoot,
+ "src",
+ "dotnet",
+ "commands",
+ "dotnet-new",
+ templateToArchive,
+ "$projectName$.csproj");
+
+ var rootElement = ProjectRootElement.Open(templatePath);
+ var packageRefs = rootElement.Items.Where(i => i.ItemType == "PackageReference").ToList();
+
+ foreach (var packageRef in packageRefs)
{
- foreach (var metadata in packageRef.Metadata)
+ dataToHash += $"{packageRef.Include},";
+ if (packageRef.HasMetadata)
{
- dataToHash += $"{metadata.Name}={metadata.Value};";
+ foreach (var metadata in packageRef.Metadata)
+ {
+ dataToHash += $"{metadata.Name}={metadata.Value};";
+ }
}
}
}
diff --git a/src/Microsoft.DotNet.Configurer/NuGetCachePrimer.cs b/src/Microsoft.DotNet.Configurer/NuGetCachePrimer.cs
index f7c9ad71c..212966ada 100644
--- a/src/Microsoft.DotNet.Configurer/NuGetCachePrimer.cs
+++ b/src/Microsoft.DotNet.Configurer/NuGetCachePrimer.cs
@@ -10,6 +10,12 @@ namespace Microsoft.DotNet.Configurer
{
public class NuGetCachePrimer : INuGetCachePrimer
{
+ private static string[] s_TemplatesUsedToPrimeCache = new string[]
+ {
+ "Web",
+ "Web1.1"
+ };
+
private readonly ICommandFactory _commandFactory;
private readonly IDirectory _directory;
@@ -52,7 +58,7 @@ namespace Microsoft.DotNet.Configurer
public void PrimeCache()
{
- if(SkipPrimingTheCache())
+ if (SkipPrimingTheCache())
{
return;
}
@@ -69,30 +75,37 @@ namespace Microsoft.DotNet.Configurer
private void PrimeCacheUsingArchive(string extractedPackagesArchiveDirectory)
{
- using (var temporaryDotnetNewDirectory = _directory.CreateTemporaryDirectory())
+ bool succeeded = true;
+
+ foreach (string template in s_TemplatesUsedToPrimeCache)
{
- var workingDirectory = temporaryDotnetNewDirectory.DirectoryPath;
-
- var createProjectSucceeded = CreateTemporaryProject(workingDirectory);
-
- if (createProjectSucceeded)
+ if (succeeded)
{
- var restoreProjectSucceeded =
- RestoreTemporaryProject(extractedPackagesArchiveDirectory, workingDirectory);
-
- if (restoreProjectSucceeded)
+ using (var temporaryDotnetNewDirectory = _directory.CreateTemporaryDirectory())
{
- _nuGetCacheSentinel.CreateIfNotExists();
+ var workingDirectory = temporaryDotnetNewDirectory.DirectoryPath;
+
+ succeeded &= CreateTemporaryProject(workingDirectory, template);
+
+ if (succeeded)
+ {
+ succeeded &= RestoreTemporaryProject(extractedPackagesArchiveDirectory, workingDirectory);
+ }
}
}
}
+
+ if (succeeded)
+ {
+ _nuGetCacheSentinel.CreateIfNotExists();
+ }
}
- private bool CreateTemporaryProject(string workingDirectory)
+ private bool CreateTemporaryProject(string workingDirectory, string templateName)
{
return RunCommand(
"new",
- new[] { "-t", "Web" },
+ new[] { "-t", templateName },
workingDirectory);
}
@@ -100,14 +113,14 @@ namespace Microsoft.DotNet.Configurer
{
return RunCommand(
"restore",
- new[] {"-s", extractedPackagesArchiveDirectory},
+ new[] { "-s", extractedPackagesArchiveDirectory },
workingDirectory);
}
private bool RunCommand(string commandToExecute, IEnumerable args, string workingDirectory)
{
- var command = _commandFactory
- .Create(commandToExecute, args)
+ var command = _commandFactory
+ .Create(commandToExecute, args)
.WorkingDirectory(workingDirectory)
.CaptureStdOut()
.CaptureStdErr();
diff --git a/test/Microsoft.DotNet.Configurer.UnitTests/GivenANuGetCachePrimer.cs b/test/Microsoft.DotNet.Configurer.UnitTests/GivenANuGetCachePrimer.cs
index eab2f990b..a89a6562a 100644
--- a/test/Microsoft.DotNet.Configurer.UnitTests/GivenANuGetCachePrimer.cs
+++ b/test/Microsoft.DotNet.Configurer.UnitTests/GivenANuGetCachePrimer.cs
@@ -64,6 +64,9 @@ namespace Microsoft.DotNet.Configurer.UnitTests
commandFactoryMock
.Setup(c => c.Create("new", new[] { "-t", "Web" }, null, Constants.DefaultConfiguration))
.Returns(_dotnetNewCommandMock.Object);
+ commandFactoryMock
+ .Setup(c => c.Create("new", new[] { "-t", "Web1.1" }, null, Constants.DefaultConfiguration))
+ .Returns(_dotnetNewCommandMock.Object);
_dotnetRestoreCommandMock = new Mock();
SetupCommandMock(_dotnetRestoreCommandMock);
@@ -124,25 +127,25 @@ namespace Microsoft.DotNet.Configurer.UnitTests
[Fact]
public void It_runs_dotnet_new_using_the_temporary_folder()
{
- _dotnetNewCommandMock.Verify(c => c.WorkingDirectory(TEMPORARY_FOLDER_PATH), Times.Once);
+ _dotnetNewCommandMock.Verify(c => c.WorkingDirectory(TEMPORARY_FOLDER_PATH), Times.Exactly(2));
}
[Fact]
public void It_runs_dotnet_new_capturing_stdout()
{
- _dotnetNewCommandMock.Verify(c => c.CaptureStdOut(), Times.Once);
+ _dotnetNewCommandMock.Verify(c => c.CaptureStdOut(), Times.Exactly(2));
}
[Fact]
public void It_runs_dotnet_new_capturing_stderr()
{
- _dotnetNewCommandMock.Verify(c => c.CaptureStdErr(), Times.Once);
+ _dotnetNewCommandMock.Verify(c => c.CaptureStdErr(), Times.Exactly(2));
}
[Fact]
public void It_actually_runs_dotnet_new()
{
- _dotnetNewCommandMock.Verify(c => c.Execute(), Times.Once);
+ _dotnetNewCommandMock.Verify(c => c.Execute(), Times.Exactly(2));
}
[Fact]
@@ -154,7 +157,7 @@ namespace Microsoft.DotNet.Configurer.UnitTests
new [] {"-s", $"{PACKAGES_ARCHIVE_PATH}"},
null,
Constants.DefaultConfiguration),
- Times.Once);
+ Times.Exactly(2));
}
[Fact]
@@ -184,25 +187,25 @@ namespace Microsoft.DotNet.Configurer.UnitTests
[Fact]
public void It_runs_dotnet_restore_using_the_temporary_folder()
{
- _dotnetRestoreCommandMock.Verify(c => c.WorkingDirectory(TEMPORARY_FOLDER_PATH), Times.Once);
+ _dotnetRestoreCommandMock.Verify(c => c.WorkingDirectory(TEMPORARY_FOLDER_PATH), Times.Exactly(2));
}
[Fact]
public void It_runs_dotnet_restore_capturing_stdout()
{
- _dotnetRestoreCommandMock.Verify(c => c.CaptureStdOut(), Times.Once);
+ _dotnetRestoreCommandMock.Verify(c => c.CaptureStdOut(), Times.Exactly(2));
}
[Fact]
public void It_runs_dotnet_restore_capturing_stderr()
{
- _dotnetRestoreCommandMock.Verify(c => c.CaptureStdErr(), Times.Once);
+ _dotnetRestoreCommandMock.Verify(c => c.CaptureStdErr(), Times.Exactly(2));
}
[Fact]
public void It_actually_runs_dotnet_restore()
{
- _dotnetRestoreCommandMock.Verify(c => c.Execute(), Times.Once);
+ _dotnetRestoreCommandMock.Verify(c => c.Execute(), Times.Exactly(2));
}
[Fact]