From fcdc23233e388c4a9c1f6c857ecd697b09621c69 Mon Sep 17 00:00:00 2001 From: Justin Emgarten Date: Wed, 12 Oct 2016 23:14:55 -0700 Subject: [PATCH 1/2] Recursive restore and solution restore support This change adds support for restoring solution files with msbuild /t:Restore and dotnet restore3. Restoring a project file will now recursively restore all dependency projects to match build. Fixes https://github.com/dotnet/cli/issues/4252 Related to: https://github.com/NuGet/Home/issues/2993 --- .../Microsoft.NuGet.ImportAfter.targets | 18 ++++++++++++++++++ src/dotnet/commands/dotnet-restore3/Program.cs | 15 ++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 resources/MSBuildImports/15.0/SolutionFile/ImportAfter/Microsoft.NuGet.ImportAfter.targets diff --git a/resources/MSBuildImports/15.0/SolutionFile/ImportAfter/Microsoft.NuGet.ImportAfter.targets b/resources/MSBuildImports/15.0/SolutionFile/ImportAfter/Microsoft.NuGet.ImportAfter.targets new file mode 100644 index 000000000..433922aac --- /dev/null +++ b/resources/MSBuildImports/15.0/SolutionFile/ImportAfter/Microsoft.NuGet.ImportAfter.targets @@ -0,0 +1,18 @@ + + + + + $(MSBuildExtensionsPath)\NuGet.targets + + + diff --git a/src/dotnet/commands/dotnet-restore3/Program.cs b/src/dotnet/commands/dotnet-restore3/Program.cs index 7a8d5f0af..1a753dc7f 100644 --- a/src/dotnet/commands/dotnet-restore3/Program.cs +++ b/src/dotnet/commands/dotnet-restore3/Program.cs @@ -60,6 +60,12 @@ namespace Microsoft.DotNet.Tools.Restore3 "Treat package source failures as warnings.", CommandOptionType.NoValue); + // Use a boolean argument instead of a switch to match nuget.exe + var recursive = cmd.Option( + "--recursive", + "Restore all dependency projects.", + CommandOptionType.BoolValue); + cmd.OnExecute(() => { var msbuildArgs = new List() @@ -69,7 +75,7 @@ namespace Microsoft.DotNet.Tools.Restore3 if (sourceOption.HasValue()) { - msbuildArgs.Add($"/p:RestoreSources={string.Join(";", sourceOption.Values)}"); + msbuildArgs.Add($"/p:RestoreSources={string.Join("%3B", sourceOption.Values)}"); } if (packagesOption.HasValue()) @@ -97,6 +103,13 @@ namespace Microsoft.DotNet.Tools.Restore3 msbuildArgs.Add($"/p:RestoreIgnoreFailedSources=true"); } + // By default restore is recursive, if set to false turn it off. + // If the argument is not present use the default behavior. + if (recursive.BoolValue == false) + { + msbuildArgs.Add($"/p:RestoreRecursive=false"); + } + // Add in arguments msbuildArgs.AddRange(argRoot.Values); From 53b436c5d56c28359214068abc11121db931db4e Mon Sep 17 00:00:00 2001 From: Justin Emgarten Date: Thu, 13 Oct 2016 19:31:15 -0700 Subject: [PATCH 2/2] Updating NuGet to 3.6.0-rc-1984 --- build_projects/dotnet-cli-build/project.json | 2 +- src/Microsoft.DotNet.Cli.Utils/project.json | 8 ++++---- src/Microsoft.DotNet.Compiler.Common/project.json | 2 +- src/Microsoft.DotNet.ProjectModel/project.json | 8 ++++---- src/redist/project.json | 2 +- src/tool_nuget/project.json | 2 +- test/Microsoft.DotNet.Cli.Utils.Tests/project.json | 8 ++++---- test/Microsoft.DotNet.ProjectModel.Tests/project.json | 2 +- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/build_projects/dotnet-cli-build/project.json b/build_projects/dotnet-cli-build/project.json index 9ae4316b9..caa2104b7 100644 --- a/build_projects/dotnet-cli-build/project.json +++ b/build_projects/dotnet-cli-build/project.json @@ -20,7 +20,7 @@ "System.Runtime.Serialization.Primitives": "4.1.1", "System.Xml.XmlSerializer": "4.0.11", "WindowsAzure.Storage": "6.2.2-preview", - "NuGet.CommandLine.XPlat": "3.6.0-rc-1979", + "NuGet.CommandLine.XPlat": "3.6.0-rc-1984", "Microsoft.Build.Utilities.Core": "0.1.0-preview-00043-160929", "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000933" }, diff --git a/src/Microsoft.DotNet.Cli.Utils/project.json b/src/Microsoft.DotNet.Cli.Utils/project.json index 02b93369e..8f8450bab 100644 --- a/src/Microsoft.DotNet.Cli.Utils/project.json +++ b/src/Microsoft.DotNet.Cli.Utils/project.json @@ -9,10 +9,10 @@ "target": "project" }, "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000933", - "NuGet.Versioning": "3.6.0-rc-1979", - "NuGet.Packaging": "3.6.0-rc-1979", - "NuGet.Frameworks": "3.6.0-rc-1979", - "NuGet.ProjectModel": "3.6.0-rc-1979" + "NuGet.Versioning": "3.6.0-rc-1984", + "NuGet.Packaging": "3.6.0-rc-1984", + "NuGet.Frameworks": "3.6.0-rc-1984", + "NuGet.ProjectModel": "3.6.0-rc-1984" }, "frameworks": { "netstandard1.3": { diff --git a/src/Microsoft.DotNet.Compiler.Common/project.json b/src/Microsoft.DotNet.Compiler.Common/project.json index 1092f7d53..168364905 100644 --- a/src/Microsoft.DotNet.Compiler.Common/project.json +++ b/src/Microsoft.DotNet.Compiler.Common/project.json @@ -14,7 +14,7 @@ "Microsoft.DotNet.Files": { "target": "project" }, - "NuGet.ProjectModel": "3.6.0-rc-1979" + "NuGet.ProjectModel": "3.6.0-rc-1984" }, "frameworks": { "netstandard1.3": { diff --git a/src/Microsoft.DotNet.ProjectModel/project.json b/src/Microsoft.DotNet.ProjectModel/project.json index cfdb9a1de..292acc616 100644 --- a/src/Microsoft.DotNet.ProjectModel/project.json +++ b/src/Microsoft.DotNet.ProjectModel/project.json @@ -8,10 +8,10 @@ "Microsoft.Extensions.DependencyModel": "1.0.1-beta-000933", "Microsoft.DotNet.PlatformAbstractions": "1.0.1-beta-000933", "Newtonsoft.Json": "9.0.1", - "NuGet.Configuration": "3.6.0-rc-1979", - "NuGet.Packaging": "3.6.0-rc-1979", - "NuGet.RuntimeModel": "3.6.0-rc-1979", - "NuGet.ProjectModel": "3.6.0-rc-1979", + "NuGet.Configuration": "3.6.0-rc-1984", + "NuGet.Packaging": "3.6.0-rc-1984", + "NuGet.RuntimeModel": "3.6.0-rc-1984", + "NuGet.ProjectModel": "3.6.0-rc-1984", "System.Reflection.Metadata": "1.4.1-beta-24410-02" }, "frameworks": { diff --git a/src/redist/project.json b/src/redist/project.json index 4f372691f..51d442bb3 100644 --- a/src/redist/project.json +++ b/src/redist/project.json @@ -22,7 +22,7 @@ "Microsoft.Build.Runtime": "15.1.316-preview5", "Microsoft.CodeAnalysis.Build.Tasks": "2.0.0-beta6-60922-08", "System.Runtime.Serialization.Xml": "4.1.1", - "NuGet.Build.Tasks": "3.6.0-rc-1979", + "NuGet.Build.Tasks": "3.6.0-rc-1984", "Microsoft.TestPlatform.CLI": "15.0.0-preview-20161005-01", "Microsoft.TestPlatform.Build": "15.0.0-preview-20161005-01" }, diff --git a/src/tool_nuget/project.json b/src/tool_nuget/project.json index 02f0d8cd5..2358d30f5 100644 --- a/src/tool_nuget/project.json +++ b/src/tool_nuget/project.json @@ -8,7 +8,7 @@ "type": "platform", "version": "1.0.1" }, - "NuGet.CommandLine.XPlat": "3.6.0-rc-1979" + "NuGet.CommandLine.XPlat": "3.6.0-rc-1984" }, "frameworks": { "netcoreapp1.0": { diff --git a/test/Microsoft.DotNet.Cli.Utils.Tests/project.json b/test/Microsoft.DotNet.Cli.Utils.Tests/project.json index cbdadd442..9a96903d8 100644 --- a/test/Microsoft.DotNet.Cli.Utils.Tests/project.json +++ b/test/Microsoft.DotNet.Cli.Utils.Tests/project.json @@ -30,10 +30,10 @@ }, "System.Diagnostics.TraceSource": "4.0.0", "System.Runtime.Serialization.Primitives": "4.1.1", - "NuGet.Versioning": "3.6.0-rc-1979", - "NuGet.Packaging": "3.6.0-rc-1979", - "NuGet.Frameworks": "3.6.0-rc-1979", - "NuGet.ProjectModel": "3.6.0-rc-1979", + "NuGet.Versioning": "3.6.0-rc-1984", + "NuGet.Packaging": "3.6.0-rc-1984", + "NuGet.Frameworks": "3.6.0-rc-1984", + "NuGet.ProjectModel": "3.6.0-rc-1984", "Microsoft.DotNet.ProjectModel": { "target": "project" }, diff --git a/test/Microsoft.DotNet.ProjectModel.Tests/project.json b/test/Microsoft.DotNet.ProjectModel.Tests/project.json index 68e54b2ed..5a3ed6d28 100644 --- a/test/Microsoft.DotNet.ProjectModel.Tests/project.json +++ b/test/Microsoft.DotNet.ProjectModel.Tests/project.json @@ -22,7 +22,7 @@ }, "xunit": "2.2.0-beta3-build3330", "dotnet-test-xunit": "1.0.0-rc2-350904-49", - "NuGet.ProjectModel": "3.6.0-rc-1979" + "NuGet.ProjectModel": "3.6.0-rc-1984" }, "frameworks": { "netcoreapp1.0": {