Beispiel #1
0
        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);
            }
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        /// <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();
            }
        }
Beispiel #7
0
        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);
                }
            }
        }