diff --git a/src/AddIns/Misc/PackageManagement/Packages/NuGet.exe b/src/AddIns/Misc/PackageManagement/Packages/NuGet.exe index 8b165b5898..dabb7ca654 100644 Binary files a/src/AddIns/Misc/PackageManagement/Packages/NuGet.exe and b/src/AddIns/Misc/PackageManagement/Packages/NuGet.exe differ diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs index c67a57d442..d2ffb03ced 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackage.cs @@ -112,5 +112,12 @@ namespace ICSharpCode.PackageManagement.Design { DependenciesList.Add(new PackageDependency(id)); } + + List frameworkAssemblies = + new List(); + + public IEnumerable FrameworkAssemblies { + get { return frameworkAssemblies; } + } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageAssemblyReference.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageAssemblyReference.cs index 1e04f918e1..87746c5476 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageAssemblyReference.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageAssemblyReference.cs @@ -2,8 +2,10 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; +using System.Collections.Generic; using System.IO; using System.Runtime.Versioning; + using NuGet; namespace ICSharpCode.PackageManagement.Design @@ -28,5 +30,11 @@ namespace ICSharpCode.PackageManagement.Design { throw new NotImplementedException(); } + + public IEnumerable SupportedFrameworks { + get { + throw new NotImplementedException(); + } + } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs index 548dbc9459..a9aab268ec 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeProjectSystem.cs @@ -17,9 +17,7 @@ namespace ICSharpCode.PackageManagement.Design } public string ProjectName { - get { - throw new NotImplementedException(); - } + get { return String.Empty; } } public dynamic GetPropertyValue(string propertyName) @@ -46,5 +44,10 @@ namespace ICSharpCode.PackageManagement.Design { throw new NotImplementedException(); } + + public void AddFrameworkReference(string name) + { + throw new NotImplementedException(); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs index e9d828679c..6b75f6ae4d 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs @@ -59,9 +59,7 @@ namespace ICSharpCode.PackageManagement public void AddReference(string referencePath, Stream stream) { ReferenceProjectItem assemblyReference = CreateReference(referencePath); - ProjectService.AddProjectItem(project, assemblyReference); - project.Save(); - LogAddedReferenceToProject(assemblyReference); + AddReferenceToProject(assemblyReference); } ReferenceProjectItem CreateReference(string referencePath) @@ -72,6 +70,13 @@ namespace ICSharpCode.PackageManagement return assemblyReference; } + void AddReferenceToProject(ReferenceProjectItem assemblyReference) + { + ProjectService.AddProjectItem(project, assemblyReference); + project.Save(); + LogAddedReferenceToProject(assemblyReference); + } + void LogAddedReferenceToProject(ReferenceProjectItem referenceProjectItem) { LogAddedReferenceToProject(referenceProjectItem.Include, ProjectName); @@ -240,5 +245,18 @@ namespace ICSharpCode.PackageManagement { DebugLogFormat("Removed file '{0}' from folder '{1}'.", fileName, directory); } + + public void AddFrameworkReference(string name) + { + ReferenceProjectItem assemblyReference = CreateGacReference(name); + AddReferenceToProject(assemblyReference); + } + + ReferenceProjectItem CreateGacReference(string name) + { + var assemblyReference = new ReferenceProjectItem(project); + assemblyReference.Include = name; + return assemblyReference; + } } } diff --git a/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll b/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll index aadac4d76b..66170008cf 100644 Binary files a/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll and b/src/AddIns/Misc/PackageManagement/RequiredLibraries/NuGet.Core.dll differ diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackagePathResolver.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackagePathResolver.cs index a0d860979a..087d977bb5 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackagePathResolver.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FakePackagePathResolver.cs @@ -22,5 +22,15 @@ namespace PackageManagement.Tests.Helpers { throw new NotImplementedException(); } + + public string GetPackageDirectory(string packageId, Version version) + { + throw new NotImplementedException(); + } + + public string GetPackageFileName(string packageId, Version version) + { + throw new NotImplementedException(); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs index adb654f167..09671d255e 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs @@ -623,5 +623,51 @@ namespace PackageManagement.Tests Assert.AreEqual("test", projectSystem.DirectoryPassedToLogDeletedDirectory); } + + [Test] + public void AddFrameworkReference_SystemXmlToBeAdded_ReferenceAddedToProject() + { + CreateTestProject(); + CreateProjectSystem(project); + + projectSystem.AddFrameworkReference("System.Xml"); + + ReferenceProjectItem referenceItem = ProjectHelper.GetReference(project, "System.Xml"); + + ReferenceProjectItem expectedReferenceItem = new ReferenceProjectItem(project); + expectedReferenceItem.Include = "System.Xml"; + + ReferenceProjectItemAssert.AreEqual(expectedReferenceItem, referenceItem); + } + + [Test] + public void AddFrameworkReference_SystemXmlToBeAdded_ProjectIsSaved() + { + CreateTestProject(); + CreateProjectSystem(project); + + projectSystem.AddFrameworkReference("System.Xml"); + + bool saved = project.IsSaved; + + Assert.IsTrue(saved); + } + + [Test] + public void AddFrameworkReference_SystemXmlToBeAdded_AddedReferenceIsLogged() + { + CreateTestProject(); + CreateProjectSystem(project); + project.Name = "MyTestProject"; + + projectSystem.AddFrameworkReference("System.Xml"); + + var expectedReferenceAndProjectName = new ReferenceAndProjectName() { + Reference = "System.Xml", + Project = "MyTestProject" + }; + + Assert.AreEqual(expectedReferenceAndProjectName, projectSystem.ReferenceAndProjectNamePassedToLogAddedReferenceToProject); + } } }