protected override void OnWriteProject (ProgressMonitor monitor, MonoDevelop.Projects.MSBuild.MSBuildProject msproject) { if (projItemsPath == FilePath.Null) projItemsPath = Path.ChangeExtension (FileName, ".projitems"); if (projitemsProject == null) { projitemsProject = new MSBuildProject (msproject.EngineManager); projitemsProject.FileName = projItemsPath; var grp = projitemsProject.GetGlobalPropertyGroup (); if (grp == null) grp = projitemsProject.AddNewPropertyGroup (false); grp.SetValue ("MSBuildAllProjects", "$(MSBuildAllProjects);$(MSBuildThisFileFullPath)"); grp.SetValue ("HasSharedItems", true); grp.SetValue ("SharedGUID", ItemId, preserveExistingCase:true); } IMSBuildPropertySet configGrp = projitemsProject.PropertyGroups.FirstOrDefault (g => g.Label == "Configuration"); if (configGrp == null) { configGrp = projitemsProject.AddNewPropertyGroup (true); configGrp.Label = "Configuration"; } configGrp.SetValue ("Import_RootNamespace", DefaultNamespace); base.OnWriteProject (monitor, msproject); var newProject = FileName == null || projitemsProject.IsNewProject; if (newProject) { var grp = msproject.GetGlobalPropertyGroup (); if (grp == null) grp = msproject.AddNewPropertyGroup (false); grp.SetValue ("ProjectGuid", ItemId, preserveExistingCase:true); var import = msproject.AddNewImport (@"$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props"); import.Condition = @"Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')"; msproject.AddNewImport (@"$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.Default.props"); msproject.AddNewImport (@"$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.props"); import = msproject.AddNewImport (MSBuildProjectService.ToMSBuildPath (FileName.ParentDirectory, projItemsPath)); import.Label = "Shared"; if (LanguageName.Equals("C#", StringComparison.OrdinalIgnoreCase)) { msproject.AddNewImport (CSharptargets); } else if (LanguageName.Equals("F#", StringComparison.OrdinalIgnoreCase)) { msproject.AddNewImport (FSharptargets); } } else { var itemsImport = msproject.Imports.FirstOrDefault (i => i.Label == "Shared"); if (itemsImport != null) itemsImport.Project = MSBuildProjectService.ToMSBuildPath (FileName.ParentDirectory, projItemsPath); else { var import = msproject.AddNewImport (MSBuildProjectService.ToMSBuildPath (FileName.ParentDirectory, projItemsPath)); import.Label = "Shared"; } } // having no ToolsVersion is equivalent to 2.0, roundtrip that correctly if (ToolsVersion != "2.0") msproject.ToolsVersion = ToolsVersion; else if (string.IsNullOrEmpty (msproject.ToolsVersion)) msproject.ToolsVersion = null; else msproject.ToolsVersion = "2.0"; projitemsProject.Save (projItemsPath); }