构建xamarin.mac控制台应用程序以进行分发

时间:2016-01-05 14:06:48

标签: xamarin xamarin-studio xamarin.mac

我在Xamarin Studio中为mac.os创建了一个简单的控制台窗口应用程序。 我点击调试,我看到控制台应用程序。一切正常。

但是如果我打开一个bash shell并导航到bin / Debug位置并尝试运行该程序,我会收到消息:'无法执行二进制文件'。

我怀疑有些lib没有被链接。也许当我在Xamarin中运行时,它正在设置运行/调试应用程序的环境。我没有在Xamarin Studio中看到任何用于链接的构建选项。

我是Xamarin的新手,并且有一个“真正的”控制台应用程序,我想链接和分发。任何指针都会有所帮助,谢谢。

谢谢, 布鲁斯

2 个答案:

答案 0 :(得分:2)

输出.exe文件是.NET可执行文件,当它通过调试器运行时,由单声道可执行文件启动并执行。

您可以通过终端导航并运行:

来运行.exe
mono MyConsoleApp.exe

这将使用mono vm。

运行控制台应用程序.exe

如果要捆绑.exe,则需要使用mkbundle

这是我使用mkbundle生成OSX可执行文件的shell命令序列:

# Configure pkg config path.
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig:/Library/Frameworks/Mono.framework/Versions/3.0.12/lib/pkgconfig

# Configure Mono.Framework path.
export PATH=/Library/Frameworks/Mono.framework/Commands:$PATH

# Setup the architecture and framework references
export AS="as -arch i386"
export CC="clang -framework CoreFoundation -lobjc -liconv -arch i386 -mmacosx-version-min=10.6"

# Bundle the app. --deps auto-magically includes all dependencies for the .net exe, -o specifies the output native executable filename.
mkbundle MyConsoleApp.exe --deps -o MyConsoleApp

这将为OSX生成名为 MyConsoleApp (本机可执行文件)的可执行文件,名为 MyConsoleApp.exe (.NET可执行文件),您可以双击运行。

答案 1 :(得分:0)

请注意,引用mkbundle的其他答案仅适用于MonoMac。 Xamarin.Mac应用程序现在生成一个本机启动器应用程序来为您处理。