diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Property.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Property.cs index bea0ece72b..4dcbc5fda7 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Property.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Property.cs @@ -8,13 +8,20 @@ namespace ICSharpCode.PackageManagement.EnvDTE { public class Property { + IPackageManagementProjectService projectService; MSBuildBasedProject project; string name; public Property(MSBuildBasedProject project, string name) + : this(project, name, new PackageManagementProjectService()) + { + } + + public Property(MSBuildBasedProject project, string name, IPackageManagementProjectService projectService) { this.project = project; this.name = name; + this.projectService = projectService; } public object Value { @@ -22,7 +29,13 @@ namespace ICSharpCode.PackageManagement.EnvDTE set { bool escapeValue = false; project.SetProperty(name, value as string, escapeValue); + SaveProject(); } } + + void SaveProject() + { + projectService.Save(project); + } } } diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/References.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/References.cs index 976210f946..9f5df2994c 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/References.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/References.cs @@ -28,6 +28,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE { var referenceItem = new ReferenceProjectItem(project, path); projectService.AddProjectItem(project, referenceItem); + SaveProject(); + } + + void SaveProject() + { + projectService.Save(project); } } } diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs index 9882ff2613..a7e2abd1c1 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs @@ -33,6 +33,17 @@ namespace PackageManagement.Tests.EnvDTE Assert.AreEqual("System.Data", referenceName); } + [Test] + public void ObjectReferencesAdd_AddGacAssemblyReference_MSBuildProjectIsSaved() + { + CreateProject(); + project.Object.References.Add("System.Xml"); + + bool saved = msbuildProject.IsSaved; + + Assert.IsTrue(saved); + } + [Test] public void PropertiesItemValue_GetPostBuildEvent_ReturnsProjectsPostBuildEvent() { @@ -64,5 +75,16 @@ namespace PackageManagement.Tests.EnvDTE Assert.AreEqual("$(SolutionDir)", postBuildEventProperty); } + + [Test] + public void PropertiesItemValue_SetPostBuildEvent_MSBuildProjectIsSaved() + { + CreateProject(); + project.Properties.Item("PostBuildEvent").Value = "test"; + + bool saved = msbuildProject.IsSaved; + + Assert.IsTrue(saved); + } } }