我在C#中通过Visual Studio向终端传递参数时遇到了一些问题。
我可以成功地打开终端,但是我传递的参数似乎被忽略了。
一般信息:
- Visual Studio for Mac版本8.9内部版本号1651
- 解决方案=可可应用
- 使用Xamarin/Xcode
- 当我打开终端并自己键入时,终端命令工作正常
下面是我的代码:
var encode = new System.Diagnostics.Process();
encode.StartInfo.FileName = ("/System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal");
encode.StartInfo.Arguments = ("ffmpeg -i " + filepath + " -acodec copy file_fixed.mp3");
encode.StartInfo.RedirectStandardInput = false;
encode.StartInfo.RedirectStandardOutput = false;
encode.Start();
如上所述,终端可以正常打开,但不处理我发送给它的参数。
我尝试过的事情:
- 设置RedirectsStandardInput = true,然后手动发送命令,但它从不响应。
- 在我的论证中加入/c、-c和它们的每一个排列。
1条答案
按热度按时间lnlaulya1#
这是我找到的解决方案。它可能不是最好的,但它的工作。
1.创建一个bash脚本,其中包含您希望终端执行的代码,并让它接受您指定的参数。https://unix.stackexchange.com/questions/31414/how-can-i-pass-a-command-line-argument-into-a-shell-script。
(You可以在MacOS上创建一个文件,方法是创建一个文本文件并另存为yourfile.exe,然后从终端运行chmod +x yourfile.exe来启用它。)
1.将文件放在解决方案的resources文件夹中。(在解决方案资源管理器中右键单击resources-〉add -〉existing files。
1.使用以下代码引用此文件:
要记住的事项:
Exit 0
添加到脚本的末尾,这样就可以调用proc.WaitForExit();