private Project FindProjectByName(string name, bool isWeb) { DTE dte = (DTE)GetService(typeof(DTE)); Project project = null; if (!isWeb) { project = DteHelperEx.FindProjectByName(dte, name, isWeb); } else { foreach (Project projectTemp in dte.Solution.Projects) { if (projectTemp.Name.Contains(name)) { project = projectTemp; break; } if (projectTemp.ProjectItems != null) { Project projectTemp1 = FindProjectByName(projectTemp.ProjectItems, name); if (projectTemp1 != null) { project = projectTemp1; break; } } } } return(project); }
private void AddProjectTemplate(Project project) { DTE dte = (DTE)GetService(typeof(DTE)); SolutionFolder slnFolder = null; if (project == null) { if (string.IsNullOrEmpty(this.Path)) { this.NewItem = dte.Solution.AddFromTemplate(this.Template, this.DestinationFolder, this.ItemName, false); } else { Project subProject = DteHelper.FindProjectByPath(dte.Solution, this.Path); slnFolder = (SolutionFolder)subProject.Object; this.NewItem = slnFolder.AddFromTemplate(this.Template, this.DestinationFolder, this.ItemName); } } else { slnFolder = (SolutionFolder)project.Object; this.NewItem = slnFolder.AddFromTemplate(this.Template, this.DestinationFolder, this.ItemName); } if (this.newItem == null) { //Return the project already added if the AddFromTemplate method returns null ProjectItems childItems; if (slnFolder != null) { childItems = slnFolder.Parent.ProjectItems; } else { childItems = dte.Solution.Projects as ProjectItems; } if (childItems != null) { foreach (ProjectItem item in childItems) { if (item.Name.Contains(this.ItemName)) { this.NewItem = item.Object as Project; break; } } } else { this.NewItem = DteHelperEx.FindProjectByName(dte, this.ItemName, false); } } }
public override void Execute() { DTE dte = GetService <DTE>(); string solutionDirectory = Path.GetDirectoryName((string)dte.Solution.Properties.Item("Path").Value); string targetDirectory = Path.Combine(solutionDirectory, DestinationDirectory); if (Root == null) { if (UseExtendedShell) { AddTemplateToSolution(dte.Solution, ResolveTemplateDirectory(ExtendedShellTemplate), targetDirectory, LayoutProjectName); AddTemplateToSolution(dte.Solution, ResolveTemplateDirectory(LayoutTemplate), targetDirectory, LayoutProjectName); } else { AddTemplateToSolution(dte.Solution, ResolveTemplateDirectory(BasicShellTemplate), targetDirectory, ShellProjectName); } } if (Root is Project && ((Project)Root).Object is SolutionFolder) { SolutionFolder slnFolder = ((Project)Root).Object as SolutionFolder; if (UseExtendedShell) { AddTemplateToSolutionFolder(slnFolder, ResolveTemplateDirectory(ExtendedShellTemplate), targetDirectory, ShellProjectName); AddTemplateToSolutionFolder(slnFolder, ResolveTemplateDirectory(LayoutTemplate), targetDirectory, LayoutProjectName); } else { AddTemplateToSolutionFolder(slnFolder, ResolveTemplateDirectory(BasicShellTemplate), targetDirectory, ShellProjectName); } } ShellProject = DteHelperEx.FindProjectByName(dte, ShellProjectName, false); LayoutProject = DteHelperEx.FindProjectByName(dte, LayoutProjectName, false); LibraryProject = DteHelperEx.FindProjectByName(dte, LibraryProjectName, false); if (_supportWPFViews) { if (UseExtendedShell) { AddWPFReferenceToProject((Project)LayoutProject); } AddWPFReferenceToProject((Project)ShellProject); AddWPFReferenceToProject((Project)LibraryProject); } }
/// <summary> /// Uses <see cref="DteHelper.FindProjectByPath"/> to search for the project specified by the "Path" attributte /// </summary> /// <param name="currentValue"></param> /// <param name="newValue"></param> /// <returns></returns> /// <seealso cref="ValueProvider.OnBeginRecipe"/> /// <seealso cref="DteHelper.FindProjectByPath"/> public override bool OnBeginRecipe(object currentValue, out object newValue) { DTE dte = (DTE)GetService(typeof(DTE)); if (currentValue == null) { newValue = DteHelperEx.FindProjectByName(dte, this.name, false); if (newValue != null) { return(true); } } newValue = currentValue; return(false); }
/// <summary> /// Uses <see cref="DteHelper.FindProjectByPath"/> to search for the project specified by the "Path" attributte /// </summary> /// <param name="currentValue"></param> /// <param name="newValue"></param> /// <returns></returns> /// <seealso cref="ValueProvider.OnBeginRecipe"/> /// <seealso cref="DteHelper.FindProjectByPath"/> public override bool OnBeginRecipe(object currentValue, out object newValue) { DTE dte = (DTE)GetService(typeof(DTE)); IDictionaryService dictservice = (IDictionaryService)GetService(typeof(IDictionaryService)); if (currentValue == null) { string projectName = ExpressionEvaluationHelper.EvaluateExpression(dictservice, this.nameExpression) as string; newValue = DteHelperEx.FindProjectByName(dte, projectName, false); if (newValue != null) { return(true); } } newValue = currentValue; return(false); }
/// <summary> /// Unfolds the template /// </summary> public override void Execute() { DTE dte = (DTE)GetService(typeof(DTE)); Project project = DteHelperEx.FindProjectByName(dte, this.ItemName, false); if (project != null) { this.NewItem = project; } else { if (string.IsNullOrEmpty(this.DestinationFolder)) { this.DestinationFolder = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(dte.Solution.FileName), this.ItemName); if (Directory.Exists(this.DestinationFolder)) { Directory.Delete(this.DestinationFolder, true); } } InternalExecute(); } }
public override void Execute() { DTE dte = GetService <DTE>(); string projectName = ModuleProject.Name; object target = ModuleProject.ParentProjectItem == null ? ModuleProject.DTE.Solution : ModuleProject.ParentProjectItem.ContainingProject.Object; string targetDirectory = Path.GetDirectoryName(ModuleProject.FileName); // NOTE: Visual Studio always creates: // - a project file // - a obj folder // - a Properties folder (VB only) // before running the wizard. We need to remove those // because we want to store the project in a subfolder instead. // Remove original (handle and file) project string obsoleteProjectPath = ModuleProject.FullName; dte.Solution.Remove(ModuleProject); if (!string.IsNullOrEmpty(obsoleteProjectPath)) { if (File.Exists(obsoleteProjectPath)) { File.Delete(obsoleteProjectPath); } string objFolder = Path.Combine(Path.GetDirectoryName(obsoleteProjectPath), "obj"); if (Directory.Exists(objFolder)) { // Visual basic project not always can delete de obj folder try { Directory.Delete(objFolder, true); } catch { } } string propertiesFolder = Path.Combine(Path.GetDirectoryName(obsoleteProjectPath), "Properties"); if (Directory.Exists(propertiesFolder)) { try { Directory.Delete(propertiesFolder, true); } catch { } } } if (CreateLayout) { UnfoldTemplateOnTarget(target, LayoutTemplate, targetDirectory, projectName); } else { UnfoldTemplateOnTarget(target, BaseTemplate, targetDirectory, projectName); } //if (target is SolutionFolder) //{ // ModuleProject = (Project)DteHelper.FindItemByName(((SolutionFolder)target).Parent.ProjectItems, projectName, true).Object; //} //else //{ ModuleProject = FindProjectByNameEx(dte, projectName); //} // Unfold required projects if (CreateInterface) { string interfaceProjectName = String.Format("{0}.Interface", ModuleProject.Name); UnfoldTemplateOnTarget(target, InterfaceTemplate, targetDirectory, interfaceProjectName); ModuleInterfaceProject = DteHelperEx.FindProjectByName(dte, interfaceProjectName, false); } // Update projects references if (CreateInterface) { ((VSProject)ModuleInterfaceProject.Object).References.AddProject(InterfaceProject); ((VSProject)ModuleProject.Object).References.AddProject(ModuleInterfaceProject); } else { ((VSProject)ModuleProject.Object).References.AddProject(InterfaceProject); } // create test project if (CreateTestProject) { string testProjectName = String.Format("{0}.Tests", ModuleProject.Name); UnfoldTemplateOnTarget(target, TestProjectTemplate, targetDirectory, testProjectName); TestProject = DteHelperEx.FindProjectByName(dte, testProjectName, false); // Update projects references ((VSProject)TestProject.Object).References.AddProject(ModuleProject); ((VSProject)TestProject.Object).References.AddProject(InterfaceProject); if (CreateInterface) { ((VSProject)TestProject.Object).References.AddProject(ModuleInterfaceProject); } } }