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 || !File.Exists (FileName); 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 (Path.ChangeExtension (FileName.FileName, ".projitems")); import.Label = "Shared"; if (LanguageName.Equals("C#", StringComparison.OrdinalIgnoreCase)) { msproject.AddNewImport (CSharptargets); } else if (LanguageName.Equals("F#", StringComparison.OrdinalIgnoreCase)) { msproject.AddNewImport (FSharptargets); } } else { msproject.Load (FileName); } // 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); }