Как запустить команду do tnet new и создать новый проект прямо в коде - PullRequest
0 голосов
/ 02 августа 2020

Итак, я хочу создать новые проекты do tnet прямо из моего c# кода, предположительно, запустив команду dotnet new или что-то подобное, но я не могу найти для нее синтаксис. Практически все, что я искал в Google, связано с тем, как создать проект через VS GUI или CLI, за исключением одного обсуждения.

Я пробовал несколько разных итераций чего-то вроде этого, с не повезло. Просто зависает после запуска линии waitforexit. Это примерно так или есть лучший способ?

            var process = new Process
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName = "cmd.exe",
                    Arguments = @$"dotnet new foundation -n HelloApiWorld -e ""Hello"" -en ""hello"" -la ""h""",
                    RedirectStandardOutput = true,
                    RedirectStandardError = true,
                    UseShellExecute = false,
                    CreateNoWindow = false,
                    WorkingDirectory = @"C:\testoutput"
                }
            };

            process.Start();
            process.BeginOutputReadLine();
            process.WaitForExit();

1 Ответ

2 голосов
/ 02 августа 2020

Вы используете cmd.exe в качестве начального процесса, и он не завершит выполнение автоматически. Я не уверен в шаблоне, который вы используете для создания нового проекта.

Пожалуйста, используйте Do tNet cli напрямую для выполнения вашей команды, чтобы после выполнения она автоматически закрылась.

Попробуйте в приведенном ниже примере создать новый проект с использованием шаблона консоли.

            var process = new Process
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName = "dotnet",
                    Arguments = @$"new console -o myApp",
                    RedirectStandardOutput = true,
                    RedirectStandardError = true,
                    UseShellExecute = false,
                    CreateNoWindow = false,
                    WorkingDirectory = @"C:\testoutput"
                }
            };
        
        process.Start();
        process.BeginOutputReadLine();
        process.WaitForExit();
...