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());
        }