public void Generate() { _consoleWriter.WriteLine("Creating a C++/clr project for RmiProd"); var projectName = _userInputProvider.Value(Variable.ProjectName); var tasks = new List <Task> { _fileGenerator.FromTemplate(Template.ProjectFile, Path.Combine(_pathProvider.GetProjectPath(), $"{projectName}.vcxproj"), Encoding.UTF8), _fileGenerator.FromTemplate(Template.ProjectFilter, Path.Combine(_pathProvider.GetProjectPath(), $"{projectName}.vcxproj.filter"), Encoding.UTF8), _fileGenerator.FromTemplate(Template.SampleSource, Path.Combine(_pathProvider.GetProjectPath(), SourceDirectory, projectName, $"{projectName}.cpp"), Encoding.UTF8), _fileGenerator.FromTemplate(Template.SampleHeader, Path.Combine(_pathProvider.GetProjectPath(), HeaderDirectory, projectName, $"{projectName}.h"), Encoding.UTF8), _fileGenerator.FromTemplate(Template.StdAfxSource, Path.Combine(_pathProvider.GetProjectPath(), SourceDirectory, "stdafx.cpp"), Encoding.UTF8), _fileGenerator.FromTemplate(Template.StdAfxHeader, Path.Combine(_pathProvider.GetProjectPath(), HeaderDirectory, "stdafx.h"), Encoding.UTF8), _fileGenerator.FromTemplate(Template.PackagesConfig, Path.Combine(_pathProvider.GetProjectPath(), "packages.config"), Encoding.UTF8), _fileGenerator.FromTemplate(Template.DebugProperties, Path.Combine(_pathProvider.GetProjectPath(), PropertyDirectory, $"{projectName}Debug.props"), Encoding.UTF8), _fileGenerator.FromTemplate(Template.ReleaseProperties, Path.Combine(_pathProvider.GetProjectPath(), PropertyDirectory, $"{projectName}Release.props"), Encoding.UTF8), _fileGenerator.FromTemplate(Template.UseProperties, Path.Combine(_pathProvider.GetProjectPath(), PropertyDirectory, $"Use{projectName}.props"), Encoding.UTF8), _fileGenerator.FromTemplate(Template.VersionInfo, Path.Combine(_pathProvider.GetVersionInfoPath(), $"{projectName}Version.h"), Encoding.UTF8), _fileManipulator.AppendTemplate(Template.FilesToSign, Path.Combine(_pathProvider.GetBuildStepSignDirectory(), "FileList_Win32.txt")), _fileManipulator.AppendTemplate(Template.FilesToSign, Path.Combine(_pathProvider.GetBuildStepSignDirectory(), "FileList_x64.txt")), _fileManipulator.AddProjectsToSolution(GetSolutionInfoBuilder().Build(), Sequence.FromNullable(GetProjectInfoBuilder().Build())), }; Task.WaitAll(tasks.ToArray()); }