NET.Core Доступ к файлу внутри папки моей программы - PullRequest
0 голосов
/ 12 апреля 2020

Я запустил приложение для загрузки шестнадцатеричных файлов Arduino в ОС Windows и Ma c. Мне нравится работать с фреймворком NET, поэтому я впервые подумал о тестировании NET .Core3.

Сначала я написал программу на своем компьютере Windows с Visual Studio 2019, и она отлично работает. В моей папке приложения также находится бинарный файл avrdude, avrdude.conf и шестнадцатеричный файл. Windows версия приложения просто может использовать дополнительные файлы (avrdude, conf & hex) с помощью следующей команды:

Process avr_run = new Process();
avr_run.StartInfo.FileName = "CMD.exe";
avr_run.StartInfo.Arguments = "/c avrdude -Cavrdude.conf -v -patmega32u4 -cavr109 -P" +
     getPort +
     " -b57600 -D -Uflash:w:_TEST.ino.hex:i";
avr_run.Start();
avr_run.WaitForExit();
avr_run.Close();

После окончания версии windows я работал на MacOS-порту , Я создал OSX на виртуальной машине и протестировал свое приложение. Почти все работало из коробки (как и ожидалось), но команда использовать avrdude - нет. В начале это не сработало. Теперь я понял, что команда работает, когда я копирую дополнительные файлы в указанное c место (например, Рабочий стол на моей виртуальной Ma c). Таким образом, фактический код для выполнения avrdude выглядит следующим образом:

Process avr_run = new Process();
avr_run.StartInfo.FileName = "bash";
string path = "/users/testmac/Desktop/avrdude -C/users/testmac/Desktop/avrdude.conf -v -patmega32u4 -cavr109 -P" +
    getPort +
    " -b57600 -D -Uflash:w:_TEST.ino.hex:i";
avr_run.StartInfo.Arguments = $"-c \"{path}\"";
avr_run.Start();
avr_run.WaitForExit();
avr_run.Close();

Но я не получаю команду, работающую на использование avrdude & avrdude.conf из папки приложения. На Windows это работает, просто устанавливая имя, как я делал в первом примере кода. Но если я изменю свою строку «путь» на следующее:

string path = "avrdude -Cavrdude.conf -v -patmega32u4 -cavr109 -P" +
            getPort +
            " -b57600 -D -Uflash:w:_TEST.ino.hex:i";

Кажется, что bash не распознает использование avrdude внутри папки программ. Что я тут не так делаю?

Спасибо.

...