我在Xamarin Studio中为mac.os创建了一个简单的控制台窗口应用程序。 我点击调试,我看到控制台应用程序。一切正常。
但是如果我打开一个bash shell并导航到bin / Debug位置并尝试运行该程序,我会收到消息:'无法执行二进制文件'。
我怀疑有些lib没有被链接。也许当我在Xamarin中运行时,它正在设置运行/调试应用程序的环境。我没有在Xamarin Studio中看到任何用于链接的构建选项。
我是Xamarin的新手,并且有一个“真正的”控制台应用程序,我想链接和分发。任何指针都会有所帮助,谢谢。
谢谢, 布鲁斯
答案 0 :(得分:2)
输出.exe文件是.NET可执行文件,当它通过调试器运行时,由单声道可执行文件启动并执行。
您可以通过终端导航并运行:
来运行.exemono 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应用程序现在生成一个本机启动器应用程序来为您处理。