Как сослаться на exe-файл, хранящийся в ресурсе проекта Visual Studio при запуске cmd.exe с использованием process.start () - PullRequest
0 голосов
/ 29 апреля 2019

Я занимаюсь разработкой проекта приложения для C # windows. Форма содержит кнопку, и после нажатия кнопки запускается cmd.exe, используя метод Process.Start(). StartInfo.Arguments() содержит путь к exe-файлу, хранящемуся в папке ресурсов проекта (я создал новую папку с именем Resources и другую подпапку с именем SW1. Exe-файл находится внутри папки SW1)

enter image description here

Сейчас exe-файл хранится в другом месте на локальном компьютере, и я использую полный путь для ссылки на exe-файл в StartInfo.Argument (). Однако, когда я публикую приложение C #, я хочу, чтобы exe-файл был связан как ресурс. Как я могу ссылаться на исполняемый файл в этом случае?

private async void button1_Click(object sender, EventArgs e)
    {
        await RunCMDAsync();
    }

private async static Task RunCMDAsync()
    {


        try
        {
            using (Process myProcess = new Process())
            {
                ProcessStartInfo startInfo = new ProcessStartInfo();

                startInfo.FileName = "cmd.exe";

                startInfo.Arguments = @"/C cd <path to the exe file on my local computer here> & <name of exe --additional arguments>";

                startInfo.UseShellExecute = false;
                startInfo.RedirectStandardInput = true;                    
                myProcess.StartInfo = startInfo;
                myProcess.Start();                    
                myProcess.WaitForExit();
            }
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex.Message);
        }


    }

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

startInfo.Arguments = @"/C cd <path to the exe file on my local computer here> & <name of exe --additional arguments>";

Первый аргумент - перейти в папку с файлом exe. (/C cd <path to the exe file on my local computer here>)

Второй аргумент запускает exe-файл с некоторыми параметрами (<name of exe --additional arguments>)

Как я могу сослаться на exe-файл в папке Resources> SW1 после того, как я опубликую его как отдельное приложение? Нужно ли мне извлекать exe-файл в папку на целевом компьютере во время установки приложения C # и использовать тот же код, что и выше, или есть способ напрямую ссылаться на папку ресурсов?

1 Ответ

0 голосов
/ 29 апреля 2019

Если вам нужно найти каталог, в котором работает ваша программа (я не уверен, что понял вашу проблему), тогда используйте System.AppDomain.CurrentDomain.BaseDirectory.

string exePath = System.AppDomain.CurrentDomain.BaseDirectory +
 "Resources\\SW1\\" + exefilenameWithExtension;
...