public override void SaveProject (IProgressMonitor monitor, SolutionEntityItem item, MSBuildProject project) { base.SaveProject (monitor, item, project); var dnp = item as DotNetProject; if (dnp == null) return; HashSet<string> validProjitems = new HashSet<string> (); foreach (var r in dnp.References.Where (rp => rp.ReferenceType == ReferenceType.Project)) { var ip = r.GetItemsProjectPath (); if (!string.IsNullOrEmpty (ip)) { ip = MSBuildProjectService.ToMSBuildPath (item.ItemDirectory, ip); validProjitems.Add (ip); if (!project.Imports.Any (im => im.Project == ip)) { var im = project.AddNewImport (ip, project.Imports.FirstOrDefault (i => i.Label != "Shared")); im.Label = "Shared"; im.Condition = "Exists('" + ip + "')"; } } } foreach (var im in project.Imports) { if (im.Label == "Shared" && im.Project.EndsWith (".projitems") && !(validProjitems.Contains (im.Project))) project.RemoveImport (im.Project); } }