diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs index 3379e790e6..bbb9fa59f0 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs @@ -219,7 +219,7 @@ namespace ICSharpCode.PackageManagement public void AddOrManagePackage() { - if (selectedProjects.HasMultipleProjects()) { + if (!selectedProjects.HasSingleProjectSelected()) { if (IsProjectPackage(package)) { ManagePackage(); } else { diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs index 2ac900a373..4a916d3fb7 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs @@ -1531,5 +1531,30 @@ namespace PackageManagement.Tests operationAwareRepository.AssertOperationWasStartedAndDisposed(RepositoryOperationNames.Install, "MyPackage"); } + + [Test] + public void AddOrManagePackage_SolutionSelectedAndContainsOnlyOneProject_UserPromptedToSelectOneProject() + { + CreateFakeSolution(); + AddProjectToSolution(); + fakeSolution.FakeMSBuildProjects[0].Name = "MyProject"; + fakeSolution.NoProjectsSelected(); + fakeSolution.AddFakeProjectToReturnFromGetProject("MyProject"); + CreateViewModel(fakeSolution); + UserCancelsProjectSelection(); + + viewModel.AddOrManagePackage(); + + IEnumerable selectedProjects = + fakePackageManagementEvents.SelectedProjectsPassedToOnSelectProjects; + + var expectedSelectedProjects = new List(); + expectedSelectedProjects.Add(new FakeSelectedProject("MyProject")); + + var nullReferenceException = new NullReferenceException(); + Assert.IsFalse(fakeLogger.FormattedMessagesLoggedContainsText(nullReferenceException.Message)); + Assert.IsNotNull(selectedProjects); + SelectedProjectCollectionAssert.AreEqual(expectedSelectedProjects, selectedProjects); + } } }