/// <summary> /// Run project item finished generating which will move the sprite png into the SPI due to /// some VS quirk which means you can't call 'replace params' in the vstemplate for png files. /// </summary> /// <param name="projectItem">The project item</param> public override void RunProjectItemFinishedGenerating(ProjectItem projectItem) { base.RunProjectItemFinishedGenerating(projectItem); if (projectItem.Name.ToLower() == "tempsprites.png") { //Find the temp sprite project item ProjectItem spritesItem = DTEManager.FindItemByName(projectItem.ContainingProject.ProjectItems, "tempsprites.png", true); //We don't want this so bin it from the solution spritesItem.Remove(); ProjectItem parent = spiItem.Collection.Parent as ProjectItem; FileInfo sourceFile = new FileInfo(spritesItem.FileNames[0]); FileInfo parentFile = new FileInfo(parent.FileNames[0]); string newFileName = parentFile.Directory.ToString() + Path.DirectorySeparatorChar + "sprites.png"; File.Move(sourceFile.ToString(), newFileName); parent.ProjectItems.AddFromFileCopy(newFileName); //Final tidy up if (sourceFile.Exists) { sourceFile.Delete(); } } else { spiItem = projectItem; } }
public override void RunWizardFinished() { base.RunWizardFinished(); // required to push changes from DTE.Project to ISharePointProject ISharePointProject spProject = DTEManager.ActiveSharePointProject; spProject.Synchronize(); string projectPath = Path.GetDirectoryName(spProject.FullPath); ISharePointProjectItem webTemplate = DTEManager.FindSPIItemByName(projectItemName, spProject); ISharePointProjectItem webTemplateStamp = DTEManager.FindSPIItemByName(String.Format("{0}Stamp", projectItemName), spProject); ISharePointProjectItem publishingPage = DTEManager.FindSPIItemByName(String.Format("{0}PublishingPage", projectItemName), spProject); ISharePointProjectItem wikiPage = DTEManager.FindSPIItemByName(String.Format("{0}WikiPage", projectItemName), spProject); ISharePointProjectItem webPartPage = DTEManager.FindSPIItemByName(String.Format("{0}WebPartPage", projectItemName), spProject); ISharePointProjectFeature webTemplateFeature = spProject.Features[projectItemName]; ISharePointProjectFeature webTemplateStampFeature = spProject.Features[String.Format("{0}Stamp", projectItemName)]; ISharePointProjectFeature webTemplateWelcomePageFeature = spProject.Features[String.Format("{0}WelcomePage", projectItemName)]; // remove automatically added feature associations foreach (ISharePointProjectFeature feature in spProject.Features) { feature.ProjectItems.Remove(webTemplate); feature.ProjectItems.Remove(webTemplateStamp); feature.ProjectItems.Remove(publishingPage); feature.ProjectItems.Remove(wikiPage); feature.ProjectItems.Remove(webPartPage); } // add standard spis to own features webTemplateFeature.ProjectItems.Add(webTemplate); webTemplateStampFeature.ProjectItems.Add(webTemplateStamp); webTemplateWelcomePageFeature.ProjectItems.Add(publishingPage); webTemplateWelcomePageFeature.ProjectItems.Add(wikiPage); webTemplateWelcomePageFeature.ProjectItems.Add(webPartPage); ProjectItem pagesFolder = DTEManager.FindItemByName(DTEManager.ActiveProject.ProjectItems, "Pages", true); ProjectItem defaultPageProjectItem = null; switch (welcomePageType) { case WelcomePageType.WebPartPage: DTEManager.SafeDeleteProjectItem(DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}WikiPage", projectItemName), true)); DTEManager.SafeDeleteProjectItem(DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}PublishingPage", projectItemName), true)); defaultPageProjectItem = DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}WebPartPage", projectItemName), true); break; case WelcomePageType.WikiPage: DTEManager.SafeDeleteProjectItem(DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}WebPartPage", projectItemName), true)); DTEManager.SafeDeleteProjectItem(DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}PublishingPage", projectItemName), true)); defaultPageProjectItem = DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}WikiPage", projectItemName), true); break; case WelcomePageType.PublishingPage: DTEManager.SafeDeleteProjectItem(DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}WikiPage", projectItemName), true)); DTEManager.SafeDeleteProjectItem(DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}WebPartPage", projectItemName), true)); defaultPageProjectItem = DTEManager.FindItemByName(pagesFolder.ProjectItems, String.Format("{0}PublishingPage", projectItemName), true); break; } if (defaultPageProjectItem != null) { defaultPageProjectItem.Name = String.Format("{0}Default", projectItemName); } }