From b7f2ddb27e0b832a1bcdced8d92078149fe257d0 Mon Sep 17 00:00:00 2001 From: Ankit Mishra Date: Thu, 22 Dec 2016 17:13:09 -0800 Subject: [PATCH 1/5] Fixing update on tfm --- .../AddPackageReferenceCommandRunner.cs | 51 ++++++++++++------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs index 96152d7892b..3e9dec2c643 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs @@ -204,24 +204,41 @@ private void UpdatePackageVersionIfNeeded(RestoreResultPair restorePreviewResult // If the user did not specify a version then write the exact resolved version if (packageReferenceArgs.NoVersion) { - // Get the flattened restore graph - var flattenedRestoreGraph = restorePreviewResult - .Result - .RestoreGraphs - .First() - .Flattened; - - // Get the package entry and version from the graph - var packageEntry = flattenedRestoreGraph - .Single(p => p.Key.Name.Equals(packageReferenceArgs.PackageDependency.Id, StringComparison.OrdinalIgnoreCase)); - var resolvedVersion = packageEntry - .Key - .Version; - - //Update the packagedependency with the new version - packageReferenceArgs.PackageDependency = new PackageDependency(packageReferenceArgs.PackageDependency.Id, - VersionRange.Parse(resolvedVersion.ToString())); + // Get the package version from the graph + var resolvedVersion = privateGetPackageVersionFromRestoreResult(restorePreviewResult, packageReferenceArgs); + + if (resolvedVersion != null) + { + //Update the packagedependency with the new version + packageReferenceArgs.PackageDependency = new PackageDependency(packageReferenceArgs.PackageDependency.Id, + VersionRange.Parse(resolvedVersion.ToString())); + } + } + } + + private NuGetVersion privateGetPackageVersionFromRestoreResult(RestoreResultPair restorePreviewResult, + PackageReferenceArgs packageReferenceArgs) + { + // Get the flattened restore graph + var flattenedRestoreGraphs = restorePreviewResult + .Result + .RestoreGraphs + .Select(r => r.Flattened); + + foreach (var flattenedRestoreGraph in flattenedRestoreGraphs) + { + var matchingPackageEntries = flattenedRestoreGraph + .Select(p => p) + .Where(p => p.Key.Name.Equals(packageReferenceArgs.PackageDependency.Id, StringComparison.OrdinalIgnoreCase)); + if (matchingPackageEntries.Count() > 0) + { + return matchingPackageEntries + .First() + .Key + .Version; + } } + return null; } } } \ No newline at end of file From e2633c58f0e57d67b70b668abfb1d8b56dbd96b7 Mon Sep 17 00:00:00 2001 From: Ankit Mishra Date: Tue, 3 Jan 2017 16:21:25 -0800 Subject: [PATCH 2/5] Adding comments to msbuildAPIUtility and fixing the way we look up resolved version --- .../AddPackageReferenceCommand.cs | 2 +- .../AddPackageReferenceCommandRunner.cs | 32 +++++---- .../Strings.Designer.cs | 36 ++++++++++ .../NuGet.CommandLine.XPlat/Strings.resx | 25 +++++++ .../Utility/MSBuildAPIUtility.cs | 65 ++++++++++++++----- .../NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs | 36 +++++----- 6 files changed, 149 insertions(+), 47 deletions(-) diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommand.cs b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommand.cs index 962d1c06c28..c1087c9e84e 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommand.cs +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommand.cs @@ -91,7 +91,7 @@ public static void Register(CommandLineApplication app, Func getLogger, NoVersion = noVersion, DgFilePath = dgFilePath.Value() }; - var msBuild = new MSBuildAPIUtility(); + var msBuild = new MSBuildAPIUtility(logger); var addPackageRefCommandRunner = getCommandRunner(); return addPackageRefCommandRunner.ExecuteCommand(packageRefArgs, msBuild); }); diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs index 3e9dec2c643..3fd8633cc64 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs @@ -2,21 +2,16 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Collections.Concurrent; using System.Collections.Generic; -using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; -using System.Text; using System.Threading.Tasks; using NuGet.Commands; -using NuGet.Common; using NuGet.Configuration; using NuGet.Frameworks; using NuGet.Packaging.Core; using NuGet.ProjectModel; -using NuGet.Protocol; using NuGet.Protocol.Core.Types; using NuGet.Versioning; @@ -77,8 +72,6 @@ public async Task ExecuteCommand(PackageReferenceArgs packageReferenceArgs, .Where(t => t.Success) .Select(t => t.Graph.Framework)); - var x = restorePreviewResult.Result.GetAllUnresolved(); - if (packageReferenceArgs.Frameworks?.Any() == true) { // If the user has specified frameworks then we intersect that with the compatible frameworks. @@ -219,17 +212,30 @@ private void UpdatePackageVersionIfNeeded(RestoreResultPair restorePreviewResult private NuGetVersion privateGetPackageVersionFromRestoreResult(RestoreResultPair restorePreviewResult, PackageReferenceArgs packageReferenceArgs) { - // Get the flattened restore graph - var flattenedRestoreGraphs = restorePreviewResult + // Get the restore graphs from the restore result + var restoreGraphs = restorePreviewResult .Result - .RestoreGraphs - .Select(r => r.Flattened); + .RestoreGraphs; - foreach (var flattenedRestoreGraph in flattenedRestoreGraphs) + if (packageReferenceArgs.Frameworks?.Any() == true) { - var matchingPackageEntries = flattenedRestoreGraph + // If the user specified frameworks then we get the flattened graphs only from the compatible frameworks. + var userSpecifiedFrameworks = new HashSet( + packageReferenceArgs + .Frameworks + .Select(f => NuGetFramework.Parse(f))); + + restoreGraphs = restoreGraphs + .Where(r => userSpecifiedFrameworks.Contains(r.Framework)); + } + + foreach (var restoreGraph in restoreGraphs) + { + var matchingPackageEntries = restoreGraph + .Flattened .Select(p => p) .Where(p => p.Key.Name.Equals(packageReferenceArgs.PackageDependency.Id, StringComparison.OrdinalIgnoreCase)); + if (matchingPackageEntries.Count() > 0) { return matchingPackageEntries diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.Designer.cs b/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.Designer.cs index 1fa7b3ddef5..af56d999470 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.Designer.cs +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.Designer.cs @@ -248,6 +248,24 @@ public static string DisableBuffering_Description { } } + /// + /// Looks up a localized string similar to Item : {0} for {1} in Imported file : {2}. + /// + public static string Error_AddPkgErrorStringForImportedEdit { + get { + return ResourceManager.GetString("Error_AddPkgErrorStringForImportedEdit", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error while performing : {0} for package : {1}. Cannot edit items in imported files - {2}{3}. + /// + public static string Error_AddPkgFailOnImportEdit { + get { + return ResourceManager.GetString("Error_AddPkgFailOnImportEdit", resourceCulture); + } + } + /// /// Looks up a localized string similar to Package : '{0}' is incompatible with all the frameworks in project : '{1}'. /// @@ -320,6 +338,15 @@ public static string IncludeReferencedProjects_Description { } } + /// + /// Looks up a localized string similar to PackageReference for package : {0} version : {1} added to file : {2}. + /// + public static string Info_AddPkgAdded { + get { + return ResourceManager.GetString("Info_AddPkgAdded", resourceCulture); + } + } + /// /// Looks up a localized string similar to Adding PackageReference for package : '{0}', into project : '{1}'. /// @@ -347,6 +374,15 @@ public static string Info_AddPkgCompatibleWithSubsetFrameworks { } } + /// + /// Looks up a localized string similar to PackageReference for package : {0} version : {1} updated in file : {2}. + /// + public static string Info_AddPkgUpdated { + get { + return ResourceManager.GetString("Info_AddPkgUpdated", resourceCulture); + } + } + /// /// Looks up a localized string similar to Specify the location of the nuspec or project file to create a package.. /// diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.resx b/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.resx index d425b5c983c..551694ac8af 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.resx +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.resx @@ -398,4 +398,29 @@ For more information, visit http://docs.nuget.org/docs/reference/command-line-re None or invalid DgSpec was passed to NuGet add package command. + + Item : {0} for {1} in Imported file : {2} + {0} - ItemType +{1} - Package Id +{2} - Imported File Path + + + Error while performing : {0} for package : {1}. Cannot edit items in imported files - {2}{3} + {0} - Operation Name +{1} - packageId +{2} - New line +{3} - Error string + + + PackageReference for package : {0} version : {1} added to file : {2} + {0} - Package Id +{1} - package version +{2} - project file path + + + PackageReference for package : {0} version : {1} updated in file : {2} + {0} - Package Id +{1} - package version +{2} - project file path + \ No newline at end of file diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Utility/MSBuildAPIUtility.cs b/src/NuGet.Core/NuGet.CommandLine.XPlat/Utility/MSBuildAPIUtility.cs index 066341293db..5b40b3c88cc 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Utility/MSBuildAPIUtility.cs +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Utility/MSBuildAPIUtility.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +using System.Text; using Microsoft.Build.Construction; using Microsoft.Build.Evaluation; using NuGet.Commands; @@ -19,6 +20,19 @@ public class MSBuildAPIUtility private const string VERSION_TAG = "Version"; private const string FRAMEWORK_TAG = "TargetFramework"; private const string FRAMEWORKS_TAG = "TargetFrameworks"; + private const string UPDATE_OPERATION = "Update"; + private const string REMOVE_OPERATION = "Remove"; + + public ILogger Logger { get; } + + public MSBuildAPIUtility(ILogger logger) + { + if (logger == null) + { + throw new ArgumentNullException(nameof(logger)); + } + Logger = logger; + } /// /// Opens an MSBuild.Evaluation.Project type from a csproj file. @@ -88,7 +102,8 @@ public void AddPackageReferencePerTFM(string projectPath, PackageDependency pack } } - private void AddPackageReference(Project project, PackageDependency packageDependency, + private void AddPackageReference(Project project, + PackageDependency packageDependency, IEnumerable existingPackageReferences, string framework = null) { @@ -112,6 +127,7 @@ private IEnumerable GetItemGroups(Project project) { return project .Items + .Where(i => !i.IsImported) .Select(item => item.Xml.Parent as ProjectItemGroupElement) .Distinct(); } @@ -147,20 +163,36 @@ private ProjectItemGroupElement CreateItemGroup(Project project, string framewor private void UpdatePackageReferenceItems(IEnumerable packageReferencesItems, PackageDependency packageDependency) { - foreach (var packageReferenceItem in packageReferencesItems) + var importedPackageReferences = packageReferencesItems + .Where(i => i.IsImported); + + // Throw if any of the package references to be updated are imported. + if (importedPackageReferences.Any()) { - var versionMetadata = packageReferenceItem - .Metadata - .Where(m => m.Name.Equals(VERSION_TAG, StringComparison.OrdinalIgnoreCase)) - .FirstOrDefault(); - if (versionMetadata == null) - { - packageReferenceItem.SetMetadataValue(VERSION_TAG, packageDependency.VersionRange.OriginalString); - } - else + var errors = new StringBuilder(); + foreach (var importedPackageReference in importedPackageReferences) { - versionMetadata.UnevaluatedValue = packageDependency.VersionRange.OriginalString; + errors.AppendLine(string.Format(CultureInfo.CurrentCulture, + "\t " + Strings.Error_AddPkgErrorStringForImportedEdit, + importedPackageReference.ItemType, + importedPackageReference.UnevaluatedInclude, + importedPackageReference.Xml.ContainingProject.FullPath)); } + throw new Exception(string.Format(CultureInfo.CurrentCulture, + Strings.Error_AddPkgFailOnImportEdit, + UPDATE_OPERATION, + packageDependency.Id, + Environment.NewLine, + errors)); + } + foreach (var packageReferenceItem in packageReferencesItems) + { + packageReferenceItem.SetMetadataValue(VERSION_TAG, packageDependency.VersionRange.OriginalString); + Logger.LogInformation(string.Format(CultureInfo.CurrentCulture, + Strings.Info_AddPkgUpdated, + packageDependency.Id, + packageDependency.VersionRange.OriginalString, + packageReferenceItem.Xml.ContainingProject.FullPath)); } } @@ -174,6 +206,11 @@ private void AddPackageReferenceIntoItemGroup(ProjectItemGroupElement itemGroup, itemGroup.AddItem(PACKAGE_REFERENCE_TYPE_TAG, packageDependency.Id, packageMetadata); itemGroup.ContainingProject.Save(); + Logger.LogInformation(string.Format(CultureInfo.CurrentCulture, + Strings.Info_AddPkgAdded, + packageDependency.Id, + packageDependency.VersionRange.OriginalString, + itemGroup.ContainingProject.FullPath)); } /// @@ -211,9 +248,7 @@ private IEnumerable GetPackageReferencesForAllFrameworks(Project pr { { "TargetFramework", framework } }; var projectPerFramework = GetProject(project.FullPath, globalProperties); - mergedPackageReferences.AddRange(projectPerFramework.AllEvaluatedItems - .Where(item => item.ItemType.Equals(PACKAGE_REFERENCE_TYPE_TAG, StringComparison.OrdinalIgnoreCase) && - item.EvaluatedInclude.Equals(packageDependency.Id, StringComparison.OrdinalIgnoreCase))); + mergedPackageReferences.AddRange(GetPackageReferences(projectPerFramework, packageDependency)); ProjectCollection.GlobalProjectCollection.UnloadProject(projectPerFramework); } return mergedPackageReferences; diff --git a/test/NuGet.Core.FuncTests/NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs b/test/NuGet.Core.FuncTests/NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs index 9c05ed8ebbe..e756dbce7f6 100644 --- a/test/NuGet.Core.FuncTests/NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs +++ b/test/NuGet.Core.FuncTests/NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs @@ -24,6 +24,7 @@ namespace NuGet.XPlat.FuncTest public class XPlatAddPkgTests { private static readonly string projectName = "test_project_addpkg"; + private static MSBuildAPIUtility msBuild = new MSBuildAPIUtility(new TestCommandOutputLogger()); // Argument parsing related tests @@ -131,7 +132,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Act - var result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()).Result; + var result = commandRunner.ExecuteCommand(packageArgs, msBuild).Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; var itemGroup = GetItemGroupForAllFrameworks(projectXmlRoot); @@ -169,7 +170,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Act - var result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + var result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; @@ -205,7 +206,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Act - var result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + var result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; @@ -241,7 +242,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commonFramework = GetCommonFramework(packageFrameworks, projectFrameworks); // Act - var result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + var result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; var itemGroup = GetItemGroupForFramework(projectXmlRoot, commonFramework); @@ -280,7 +281,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commonFramework = GetCommonFramework(packageFrameworks, projectFrameworks, userInputFrameworks); // Act - var result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + var result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; var itemGroup = GetItemGroupForFramework(projectXmlRoot, commonFramework); @@ -325,7 +326,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commonFramework = GetCommonFramework(packageFrameworks, projectFrameworks, userInputFrameworks); // Act - var result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + var result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; var itemGroup = GetItemGroupForFramework(projectXmlRoot, commonFramework); @@ -365,7 +366,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Act - var result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + var result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; @@ -395,7 +396,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Act - var result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + var result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; @@ -431,14 +432,14 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Act - var result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + var result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; packageArgs = GetPackageReferenceArgs(packageY.Id, packageY.Version, projectA); // Act - result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; @@ -479,14 +480,14 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commonFramework = GetCommonFramework(packageFrameworks, projectFrameworks, userInputFrameworks); // Act - var result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + var result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; packageArgs = GetPackageReferenceArgs(packageY.Id, packageY.Version, projectA); // Act - result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; var itemGroup = GetItemGroupForFramework(projectXmlRoot, commonFramework); @@ -519,7 +520,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Act - var result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + var result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; var itemGroup = GetItemGroupForAllFrameworks(projectXmlRoot); @@ -562,7 +563,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Create a package ref with the old version - var result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + var result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; @@ -571,7 +572,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( // Act // Create a package ref with the new version - result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; @@ -631,10 +632,9 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var packageArgs = GetPackageReferenceArgs(packageX.Id, userInputVersionOld, projectA); var commandRunner = new AddPackageReferenceCommandRunner(); - var msBuild = new MSBuildAPIUtility(); // Create a package ref with old version - var result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + var result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; @@ -644,7 +644,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( // Act // Create a package ref with new version - result = commandRunner.ExecuteCommand(packageArgs, new MSBuildAPIUtility()) + result = commandRunner.ExecuteCommand(packageArgs, msBuild) .Result; projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; From 95efc1027fc1231df493ef4f042c9d464edf1adc Mon Sep 17 00:00:00 2001 From: Ankit Mishra Date: Wed, 4 Jan 2017 11:37:05 -0800 Subject: [PATCH 3/5] Addressing parts of PR feedback --- .../AddPackageReferenceCommand.cs | 2 -- .../AddPackageReferenceCommandRunner.cs | 12 ++++---- .../Utility/MSBuildAPIUtility.cs | 20 ++++++------- .../NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs | 30 +++++++++++-------- 4 files changed, 34 insertions(+), 30 deletions(-) diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommand.cs b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommand.cs index c1087c9e84e..66e86650ac2 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommand.cs +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommand.cs @@ -15,8 +15,6 @@ namespace NuGet.CommandLine.XPlat { public static class AddPackageReferenceCommand { - private const string MSBuildExeName = "MSBuild.dll"; - public static void Register(CommandLineApplication app, Func getLogger, Func getCommandRunner) { diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs index 3fd8633cc64..12e1af10243 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs @@ -134,7 +134,7 @@ public async Task ExecuteCommand(PackageReferenceArgs packageReferenceArgs, return 0; } - private async Task PreviewAddPackageReference(PackageReferenceArgs packageReferenceArgs, + private static async Task PreviewAddPackageReference(PackageReferenceArgs packageReferenceArgs, DependencyGraphSpec dgSpec, PackageSpec originalPackageSpec) { @@ -179,7 +179,7 @@ private async Task PreviewAddPackageReference(PackageReferenc } } - private DependencyGraphSpec ReadProjectDependencyGraph(PackageReferenceArgs packageReferenceArgs) + private static DependencyGraphSpec ReadProjectDependencyGraph(PackageReferenceArgs packageReferenceArgs) { DependencyGraphSpec spec = null; @@ -191,14 +191,14 @@ private DependencyGraphSpec ReadProjectDependencyGraph(PackageReferenceArgs pack return spec; } - private void UpdatePackageVersionIfNeeded(RestoreResultPair restorePreviewResult, + private static void UpdatePackageVersionIfNeeded(RestoreResultPair restorePreviewResult, PackageReferenceArgs packageReferenceArgs) { // If the user did not specify a version then write the exact resolved version if (packageReferenceArgs.NoVersion) { // Get the package version from the graph - var resolvedVersion = privateGetPackageVersionFromRestoreResult(restorePreviewResult, packageReferenceArgs); + var resolvedVersion = GetPackageVersionFromRestoreResult(restorePreviewResult, packageReferenceArgs); if (resolvedVersion != null) { @@ -209,7 +209,7 @@ private void UpdatePackageVersionIfNeeded(RestoreResultPair restorePreviewResult } } - private NuGetVersion privateGetPackageVersionFromRestoreResult(RestoreResultPair restorePreviewResult, + private static NuGetVersion GetPackageVersionFromRestoreResult(RestoreResultPair restorePreviewResult, PackageReferenceArgs packageReferenceArgs) { // Get the restore graphs from the restore result @@ -236,7 +236,7 @@ private NuGetVersion privateGetPackageVersionFromRestoreResult(RestoreResultPair .Select(p => p) .Where(p => p.Key.Name.Equals(packageReferenceArgs.PackageDependency.Id, StringComparison.OrdinalIgnoreCase)); - if (matchingPackageEntries.Count() > 0) + if (matchingPackageEntries.Any()) { return matchingPackageEntries .First() diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Utility/MSBuildAPIUtility.cs b/src/NuGet.Core/NuGet.CommandLine.XPlat/Utility/MSBuildAPIUtility.cs index 5b40b3c88cc..e02ecfb0ec6 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Utility/MSBuildAPIUtility.cs +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Utility/MSBuildAPIUtility.cs @@ -39,7 +39,7 @@ public MSBuildAPIUtility(ILogger logger) /// /// CSProj file which needs to be evaluated /// MSBuild.Evaluation.Project - private Project GetProject(string projectCSProjPath) + private static Project GetProject(string projectCSProjPath) { var projectRootElement = TryOpenProjectRootElement(projectCSProjPath); if (projectCSProjPath == null) @@ -55,7 +55,7 @@ private Project GetProject(string projectCSProjPath) /// CSProj file which needs to be evaluated /// Global properties that should be used to evaluate the project while opening. /// MSBuild.Evaluation.Project - private Project GetProject(string projectCSProjPath, IDictionary globalProperties) + private static Project GetProject(string projectCSProjPath, IDictionary globalProperties) { var projectRootElement = TryOpenProjectRootElement(projectCSProjPath); if (projectCSProjPath == null) @@ -123,7 +123,7 @@ private void AddPackageReference(Project project, project.Save(); } - private IEnumerable GetItemGroups(Project project) + private static IEnumerable GetItemGroups(Project project) { return project .Items @@ -139,7 +139,7 @@ private IEnumerable GetItemGroups(Project project) /// List of all item groups in the project /// An item type tag that must be in the item group. It if PackageReference in this case. /// An ItemGroup, which could be null. - private ProjectItemGroupElement GetItemGroup(Project project, IEnumerable itemGroups, + private static ProjectItemGroupElement GetItemGroup(Project project, IEnumerable itemGroups, string itemType) { var itemGroup = itemGroups? @@ -149,7 +149,7 @@ private ProjectItemGroupElement GetItemGroup(Project project, IEnumerable /// Dependency of the package. /// List of Items containing the package reference for the package. - private IEnumerable GetPackageReferences(Project project, PackageDependency packageDependency) + private static IEnumerable GetPackageReferences(Project project, PackageDependency packageDependency) { return project.AllEvaluatedItems .Where(item => item.ItemType.Equals(PACKAGE_REFERENCE_TYPE_TAG, StringComparison.OrdinalIgnoreCase) && @@ -237,7 +237,7 @@ private IEnumerable GetPackageReferences(Project project, PackageDe /// The project should have the global property set to have a specific framework /// Dependency of the package. /// List of Items containing the package reference for the package. - private IEnumerable GetPackageReferencesForAllFrameworks(Project project, + private static IEnumerable GetPackageReferencesForAllFrameworks(Project project, PackageDependency packageDependency) { var frameworks = GetProjectFrameworks(project); @@ -254,7 +254,7 @@ private IEnumerable GetPackageReferencesForAllFrameworks(Project pr return mergedPackageReferences; } - private IEnumerable GetProjectFrameworks(Project project) + private static IEnumerable GetProjectFrameworks(Project project) { var frameworks = project .AllEvaluatedProperties @@ -273,7 +273,7 @@ private IEnumerable GetProjectFrameworks(Project project) return frameworks; } - private ProjectRootElement TryOpenProjectRootElement(string filename) + private static ProjectRootElement TryOpenProjectRootElement(string filename) { try { @@ -287,7 +287,7 @@ private ProjectRootElement TryOpenProjectRootElement(string filename) } } - private string GetTargetFrameworkCondition(string targetFramework) + private static string GetTargetFrameworkCondition(string targetFramework) { return string.Format("'$(TargetFramework)' == '{0}'", targetFramework); } diff --git a/test/NuGet.Core.FuncTests/NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs b/test/NuGet.Core.FuncTests/NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs index e756dbce7f6..0f258c79990 100644 --- a/test/NuGet.Core.FuncTests/NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs +++ b/test/NuGet.Core.FuncTests/NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs @@ -10,8 +10,6 @@ using Moq; using NuGet.CommandLine.XPlat; using NuGet.Commands; -using NuGet.Common; -using NuGet.Frameworks; using NuGet.Packaging; using NuGet.Packaging.Core; using NuGet.ProjectModel; @@ -24,7 +22,11 @@ namespace NuGet.XPlat.FuncTest public class XPlatAddPkgTests { private static readonly string projectName = "test_project_addpkg"; - private static MSBuildAPIUtility msBuild = new MSBuildAPIUtility(new TestCommandOutputLogger()); + + private static MSBuildAPIUtility MsBuild + { + get { return new MSBuildAPIUtility(new TestCommandOutputLogger()); } + } // Argument parsing related tests @@ -132,7 +134,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Act - var result = commandRunner.ExecuteCommand(packageArgs, msBuild).Result; + var result = commandRunner.ExecuteCommand(packageArgs, MsBuild).Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; var itemGroup = GetItemGroupForAllFrameworks(projectXmlRoot); @@ -170,7 +172,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Act - var result = commandRunner.ExecuteCommand(packageArgs, msBuild) + var result = commandRunner.ExecuteCommand(packageArgs, MsBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; @@ -206,7 +208,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Act - var result = commandRunner.ExecuteCommand(packageArgs, msBuild) + var result = commandRunner.ExecuteCommand(packageArgs, MsBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; @@ -242,7 +244,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commonFramework = GetCommonFramework(packageFrameworks, projectFrameworks); // Act - var result = commandRunner.ExecuteCommand(packageArgs, msBuild) + var result = commandRunner.ExecuteCommand(packageArgs, MsBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; var itemGroup = GetItemGroupForFramework(projectXmlRoot, commonFramework); @@ -281,7 +283,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commonFramework = GetCommonFramework(packageFrameworks, projectFrameworks, userInputFrameworks); // Act - var result = commandRunner.ExecuteCommand(packageArgs, msBuild) + var result = commandRunner.ExecuteCommand(packageArgs, MsBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; var itemGroup = GetItemGroupForFramework(projectXmlRoot, commonFramework); @@ -326,7 +328,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commonFramework = GetCommonFramework(packageFrameworks, projectFrameworks, userInputFrameworks); // Act - var result = commandRunner.ExecuteCommand(packageArgs, msBuild) + var result = commandRunner.ExecuteCommand(packageArgs, MsBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; var itemGroup = GetItemGroupForFramework(projectXmlRoot, commonFramework); @@ -366,7 +368,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Act - var result = commandRunner.ExecuteCommand(packageArgs, msBuild) + var result = commandRunner.ExecuteCommand(packageArgs, MsBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; @@ -396,7 +398,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Act - var result = commandRunner.ExecuteCommand(packageArgs, msBuild) + var result = commandRunner.ExecuteCommand(packageArgs, MsBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; @@ -430,6 +432,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var packageArgs = GetPackageReferenceArgs(packageX.Id, packageX.Version, projectA); var commandRunner = new AddPackageReferenceCommandRunner(); + var msBuild = MsBuild; // Act var result = commandRunner.ExecuteCommand(packageArgs, msBuild) @@ -478,6 +481,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var packageArgs = GetPackageReferenceArgs(packageX.Id, packageX.Version, projectA, frameworks: userInputFrameworks); var commandRunner = new AddPackageReferenceCommandRunner(); var commonFramework = GetCommonFramework(packageFrameworks, projectFrameworks, userInputFrameworks); + var msBuild = MsBuild; // Act var result = commandRunner.ExecuteCommand(packageArgs, msBuild) @@ -520,7 +524,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var commandRunner = new AddPackageReferenceCommandRunner(); // Act - var result = commandRunner.ExecuteCommand(packageArgs, msBuild) + var result = commandRunner.ExecuteCommand(packageArgs, MsBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; var itemGroup = GetItemGroupForAllFrameworks(projectXmlRoot); @@ -561,6 +565,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var packageArgs = GetPackageReferenceArgs(packageX.Id, userInputVersionOld, projectA); var commandRunner = new AddPackageReferenceCommandRunner(); + var msBuild = MsBuild; // Create a package ref with the old version var result = commandRunner.ExecuteCommand(packageArgs, msBuild) @@ -632,6 +637,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var packageArgs = GetPackageReferenceArgs(packageX.Id, userInputVersionOld, projectA); var commandRunner = new AddPackageReferenceCommandRunner(); + var msBuild = MsBuild; // Create a package ref with old version var result = commandRunner.ExecuteCommand(packageArgs, msBuild) From 1a7649e50e4d348b6959b226a9948eb510581a73 Mon Sep 17 00:00:00 2001 From: Ankit Mishra Date: Wed, 4 Jan 2017 12:03:30 -0800 Subject: [PATCH 4/5] Fixing log strings on PR comments --- .../AddPackageReferenceCommandRunner.cs | 2 +- .../NuGet.CommandLine.XPlat/Strings.Designer.cs | 16 ++++++++-------- .../NuGet.CommandLine.XPlat/Strings.resx | 16 ++++++++-------- .../Utility/MSBuildAPIUtility.cs | 4 +++- .../NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs | 5 ++--- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs index 12e1af10243..97882150d0f 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs @@ -204,7 +204,7 @@ private static void UpdatePackageVersionIfNeeded(RestoreResultPair restorePrevie { //Update the packagedependency with the new version packageReferenceArgs.PackageDependency = new PackageDependency(packageReferenceArgs.PackageDependency.Id, - VersionRange.Parse(resolvedVersion.ToString())); + new VersionRange(resolvedVersion)); } } } diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.Designer.cs b/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.Designer.cs index af56d999470..b55c3ed66f3 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.Designer.cs +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.Designer.cs @@ -249,7 +249,7 @@ public static string DisableBuffering_Description { } /// - /// Looks up a localized string similar to Item : {0} for {1} in Imported file : {2}. + /// Looks up a localized string similar to Item '{0}' for '{1}' in Imported file '{2}'. /// public static string Error_AddPkgErrorStringForImportedEdit { get { @@ -258,7 +258,7 @@ public static string Error_AddPkgErrorStringForImportedEdit { } /// - /// Looks up a localized string similar to Error while performing : {0} for package : {1}. Cannot edit items in imported files - {2}{3}. + /// Looks up a localized string similar to Error while performing '{0}' for package '{1}'. Cannot edit items in imported files - {2}{3}. /// public static string Error_AddPkgFailOnImportEdit { get { @@ -267,7 +267,7 @@ public static string Error_AddPkgFailOnImportEdit { } /// - /// Looks up a localized string similar to Package : '{0}' is incompatible with all the frameworks in project : '{1}'. + /// Looks up a localized string similar to Package '{0}' is incompatible with all the frameworks in project '{1}'. /// public static string Error_AddPkgIncompatibleWithAllFrameworks { get { @@ -339,7 +339,7 @@ public static string IncludeReferencedProjects_Description { } /// - /// Looks up a localized string similar to PackageReference for package : {0} version : {1} added to file : {2}. + /// Looks up a localized string similar to PackageReference for package '{0}' version '{1}' added to file '{2}'. /// public static string Info_AddPkgAdded { get { @@ -348,7 +348,7 @@ public static string Info_AddPkgAdded { } /// - /// Looks up a localized string similar to Adding PackageReference for package : '{0}', into project : '{1}'. + /// Looks up a localized string similar to Adding PackageReference for package '{0}', into project '{1}'. /// public static string Info_AddPkgAddingReference { get { @@ -357,7 +357,7 @@ public static string Info_AddPkgAddingReference { } /// - /// Looks up a localized string similar to Package : '{0}' is compatible with all the specified frameworks in project : '{1}'. + /// Looks up a localized string similar to Package '{0}' is compatible with all the specified frameworks in project '{1}'. /// public static string Info_AddPkgCompatibleWithAllFrameworks { get { @@ -366,7 +366,7 @@ public static string Info_AddPkgCompatibleWithAllFrameworks { } /// - /// Looks up a localized string similar to Package : '{0}' is compatible with a subset of the specified frameworks in project : '{1}'. + /// Looks up a localized string similar to Package '{0}' is compatible with a subset of the specified frameworks in project '{1}'. /// public static string Info_AddPkgCompatibleWithSubsetFrameworks { get { @@ -375,7 +375,7 @@ public static string Info_AddPkgCompatibleWithSubsetFrameworks { } /// - /// Looks up a localized string similar to PackageReference for package : {0} version : {1} updated in file : {2}. + /// Looks up a localized string similar to PackageReference for package '{0}' version '{1}' updated in file '{2}'. /// public static string Info_AddPkgUpdated { get { diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.resx b/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.resx index 551694ac8af..26a9957f0f0 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.resx +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.resx @@ -342,22 +342,22 @@ For more information, visit http://docs.nuget.org/docs/reference/command-line-re {0} - Project/csproj path - Package : '{0}' is incompatible with all the frameworks in project : '{1}' + Package '{0}' is incompatible with all the frameworks in project '{1}' {0} - Package Id {1} - Project Path - Adding PackageReference for package : '{0}', into project : '{1}' + Adding PackageReference for package '{0}', into project '{1}' {0} - Package Id {1} - Project Path - Package : '{0}' is compatible with all the specified frameworks in project : '{1}' + Package '{0}' is compatible with all the specified frameworks in project '{1}' {0} - Package Id {1} - Project Path - Package : '{0}' is compatible with a subset of the specified frameworks in project : '{1}' + Package '{0}' is compatible with a subset of the specified frameworks in project '{1}' {0} - Package Id {1} - Project Path @@ -399,26 +399,26 @@ For more information, visit http://docs.nuget.org/docs/reference/command-line-re None or invalid DgSpec was passed to NuGet add package command. - Item : {0} for {1} in Imported file : {2} + Item '{0}' for '{1}' in Imported file '{2}' {0} - ItemType {1} - Package Id {2} - Imported File Path - Error while performing : {0} for package : {1}. Cannot edit items in imported files - {2}{3} + Error while performing '{0}' for package '{1}'. Cannot edit items in imported files - {2}{3} {0} - Operation Name {1} - packageId {2} - New line {3} - Error string - PackageReference for package : {0} version : {1} added to file : {2} + PackageReference for package '{0}' version '{1}' added to file '{2}' {0} - Package Id {1} - package version {2} - project file path - PackageReference for package : {0} version : {1} updated in file : {2} + PackageReference for package '{0}' version '{1}' updated in file '{2}' {0} - Package Id {1} - package version {2} - project file path diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Utility/MSBuildAPIUtility.cs b/src/NuGet.Core/NuGet.CommandLine.XPlat/Utility/MSBuildAPIUtility.cs index e02ecfb0ec6..a4f099ed5d1 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Utility/MSBuildAPIUtility.cs +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Utility/MSBuildAPIUtility.cs @@ -198,8 +198,10 @@ private void UpdatePackageReferenceItems(IEnumerable packageReferen private void AddPackageReferenceIntoItemGroup(ProjectItemGroupElement itemGroup, PackageDependency packageDependency) { + var packageVersion = packageDependency.VersionRange.OriginalString ?? + packageDependency.VersionRange.MinVersion.ToString(); var packageMetadata = new Dictionary(StringComparer.OrdinalIgnoreCase) - { { VERSION_TAG, packageDependency.VersionRange.OriginalString } }; + { { VERSION_TAG, packageVersion } }; // Currently metadata is added as a metadata. As opposed to an attribute // Due to https://github.com/Microsoft/msbuild/issues/1393 diff --git a/test/NuGet.Core.FuncTests/NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs b/test/NuGet.Core.FuncTests/NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs index 0f258c79990..05a578966d1 100644 --- a/test/NuGet.Core.FuncTests/NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs +++ b/test/NuGet.Core.FuncTests/NuGet.XPlat.FuncTest/XPlatAddPkgTests.cs @@ -432,17 +432,16 @@ await SimpleTestPackageUtility.CreateFolderFeedV3( var packageArgs = GetPackageReferenceArgs(packageX.Id, packageX.Version, projectA); var commandRunner = new AddPackageReferenceCommandRunner(); - var msBuild = MsBuild; // Act - var result = commandRunner.ExecuteCommand(packageArgs, msBuild) + var result = commandRunner.ExecuteCommand(packageArgs, MsBuild) .Result; var projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; packageArgs = GetPackageReferenceArgs(packageY.Id, packageY.Version, projectA); // Act - result = commandRunner.ExecuteCommand(packageArgs, msBuild) + result = commandRunner.ExecuteCommand(packageArgs, MsBuild) .Result; projectXmlRoot = LoadCSProj(projectA.ProjectPath).Root; From bca4328c8c44882db060e93441a972f14319ff22 Mon Sep 17 00:00:00 2001 From: Ankit Mishra Date: Wed, 4 Jan 2017 12:39:03 -0800 Subject: [PATCH 5/5] Fixing strings --- .../AddPackageReferenceCommandRunner.cs | 1 + .../Strings.Designer.cs | 20 ++++++++++++++++++- .../NuGet.CommandLine.XPlat/Strings.resx | 11 ++++++++-- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs index 97882150d0f..0c135f11edd 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Commands/PackageReferenceCommands/AddPackageReferenceCommandRunner.cs @@ -91,6 +91,7 @@ public async Task ExecuteCommand(PackageReferenceArgs packageReferenceArgs, packageReferenceArgs.Logger.LogError(string.Format(CultureInfo.CurrentCulture, Strings.Error_AddPkgIncompatibleWithAllFrameworks, packageReferenceArgs.PackageDependency.Id, + packageReferenceArgs.Frameworks?.Any() == true ? Strings.AddPkg_UserSpecified : Strings.AddPkg_All, packageReferenceArgs.ProjectPath)); return 1; diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.Designer.cs b/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.Designer.cs index b55c3ed66f3..376a0cebd3d 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.Designer.cs +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.Designer.cs @@ -59,6 +59,15 @@ internal Strings() { } } + /// + /// Looks up a localized string similar to all. + /// + public static string AddPkg_All { + get { + return ResourceManager.GetString("AddPkg_All", resourceCulture); + } + } + /// /// Looks up a localized string similar to Adds a package reference to a project.. /// @@ -149,6 +158,15 @@ public static string AddPkg_SourcesDescription { } } + /// + /// Looks up a localized string similar to user specified. + /// + public static string AddPkg_UserSpecified { + get { + return ResourceManager.GetString("AddPkg_UserSpecified", resourceCulture); + } + } + /// /// Looks up a localized string similar to The API key for the server.. /// @@ -267,7 +285,7 @@ public static string Error_AddPkgFailOnImportEdit { } /// - /// Looks up a localized string similar to Package '{0}' is incompatible with all the frameworks in project '{1}'. + /// Looks up a localized string similar to Package '{0}' is incompatible with '{1}' frameworks in project '{2}'. /// public static string Error_AddPkgIncompatibleWithAllFrameworks { get { diff --git a/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.resx b/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.resx index 26a9957f0f0..5b206b065d4 100644 --- a/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.resx +++ b/src/NuGet.Core/NuGet.CommandLine.XPlat/Strings.resx @@ -342,9 +342,10 @@ For more information, visit http://docs.nuget.org/docs/reference/command-line-re {0} - Project/csproj path - Package '{0}' is incompatible with all the frameworks in project '{1}' + Package '{0}' is incompatible with '{1}' frameworks in project '{2}' {0} - Package Id -{1} - Project Path +{1} - all / user specified +{2} - Project Path Adding PackageReference for package '{0}', into project '{1}' @@ -423,4 +424,10 @@ For more information, visit http://docs.nuget.org/docs/reference/command-line-re {1} - package version {2} - project file path + + all + + + user specified + \ No newline at end of file