public override int Save(string fileToBeSaved, int remember, uint formatIndex) { Microsoft.Build.Evaluation.Project pb = new Microsoft.Build.Evaluation.Project(); var g = pb.Xml.AddPropertyGroup(); //List<ProjectProperty> toreturn = new List<ProjectProperty>(); foreach (string key in _userproperties) { var prop = BuildProject.GetProperty(key); if (prop != null) { try { //BuildProject.RemoveProperty(prop); var element = g.AddProperty(key, prop.EvaluatedValue); //toreturn.Add(prop); } catch (Exception) { // } } } pb.Xml.Save(this.FileName + ".user"); pb.ProjectCollection.UnloadProject(pb); if (base.Save(fileToBeSaved, remember, formatIndex) == VSConstants.S_OK) { //nothing to see here, move along. } /*foreach (var prop in toreturn) * { * BuildProject.SetProperty(prop.Name, prop.UnevaluatedValue); * }*/ //base.SetProjectFileDirty(false); return(VSConstants.S_OK); }