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);
}
}