private Project AddProject(string projectSufix, string templateName, SolutionFolder sourceSolutionFolder = null, string folderName = null)
        {
            string destination = _replacementsDictionary["$destinationdirectory$"];

            if (_sourceFolder)
            {
                destination = Path.Combine(destination, "Source");
            }

            var projectName = $"{_replacementsDictionary["$safeprojectname$"]}.{projectSufix}";

            Project project;

            if (sourceSolutionFolder == null)
            {
                if (folderName != null)
                {
                    SolutionFolder optionalFolder = _dte.Solution.AddSolutionFolderEx(folderName);
                    project = optionalFolder.AddProject(destination, projectName, templateName);
                }
                else
                {
                    project = _dte.Solution.AddProject(destination, projectName, templateName);
                }
            }
            else
            {
                if (folderName != null)
                {
                    SolutionFolder folder = (SolutionFolder)sourceSolutionFolder.AddSolutionFolderEx(folderName);
                    project = folder.AddProject(destination, projectName, templateName);
                }
                else
                {
                    project = sourceSolutionFolder.AddProject(destination, projectName, templateName);
                }
            }

            return(project);
        }
        private Project AddProject(string projectSufix, string templateName, SolutionFolder sourceSolutionFolder = null, string folderName = null)
        {
            string destination = _replacementsDictionary["$destinationdirectory$"];

            if (_sourceFolder)
            {
                destination = Path.Combine(destination, "Source");
            }

            var projectName = $"{_replacementsDictionary["$safeprojectname$"]}.{projectSufix}";

            Project project;
            if (sourceSolutionFolder == null)
            {
                if (folderName != null)
                {
                    SolutionFolder optionalFolder = _dte.Solution.AddSolutionFolderEx(folderName);
                    project = optionalFolder.AddProject(destination, projectName, templateName);
                }
                else
                {
                    project = _dte.Solution.AddProject(destination, projectName, templateName);
                }
            }
            else
            {
                if (folderName != null)
                {
                    SolutionFolder folder = (SolutionFolder)sourceSolutionFolder.AddSolutionFolderEx(folderName);
                    project = folder.AddProject(destination, projectName, templateName);
                }
                else
                {
                    project = sourceSolutionFolder.AddProject(destination, projectName, templateName);
                }
            }

            return project;
        }