C# 如何将命令行参数传递给MonoMac应用程序?

C# 如何将命令行参数传递给MonoMac应用程序?,c#,macos,mono,monodevelop,monomac,C#,Macos,Mono,Monodevelop,Monomac,我有一个C#应用程序,使用MonoDevelop3和MonoMac库创建GUI。构建之后,我得到了一个带有嵌入式mono v3运行时的mac应用程序 应用程序运行正常,但它不接收我传递给它的任何命令行参数 static void Main (string[] args) { // args are always empty } 我已经试着通过他们使用 open -a /Applicaitons/MyApp.app --args my_command_line_arg 甚至直接运行生成的可执

我有一个C#应用程序,使用MonoDevelop3和MonoMac库创建GUI。构建之后,我得到了一个带有嵌入式mono v3运行时的mac应用程序

应用程序运行正常,但它不接收我传递给它的任何命令行参数

static void Main (string[] args)
{
 // args are always empty
}
我已经试着通过他们使用

open -a /Applicaitons/MyApp.app --args my_command_line_arg
甚至直接运行生成的可执行文件

/Applicaitons/My.app/Contents/MacOS/MyApp my_command_line_arg

在MonoMac应用程序包中,实际的“应用程序”通常是一个shell脚本,而且它不会将其参数传递给可执行文件


我认为这在目前是不可能的;我听说有人使用环境变量来解决这个问题。

如果通过shell脚本调用MonoMac应用程序,可以将命令行参数传递给它。发件人:

(…)如果你有“myprogram.exe”,你可以创建一个shell脚本 称为“myprogram”,其内容如下:

#/bin/sh
/usr/bin/mono/usr/lib/APPLICATION/myprogram.exe“$@”

当您运行“myprogram”时,shell将用任何参数替换$@ 你提供的


这适用于我在Xamarin Studio中构建的MonoMac应用程序。

我使用最新版本的Xamarin Studio(4.2.2,build 2)和MonoMac进行了尝试,效果很好。MonoMac以前似乎有一个bug,现在已经修复了。

这是一个有趣的想法,但是当mono runtime嵌入到应用程序中,并且没有单独出现在计算机上时,它如何应用呢?我完全尝试了Alex所做的,它工作得很好。我想如果它在我的项目中起作用,这个答案就不太正确。我想在最新版本的MonoMac中有一个bug修复程序可以解决前面观察到的问题。