我正在尝试使用MonoDevelop 3.0.2创建一个简单的应用程序包。
创建新的解决方案清空MonoMac项目。添加对 System.Windows.Forms 的引用。 使用以下代码创建一个新类:
using System;
using System.Windows.Forms;
namespace MM2
{
public class Program
{
public static void Main()
{
MessageBox.Show ("Hello world");
}
}
}
这完全可以从MonoDevelop运行。然后在项目选项对话框中,选择 Mac OS X打包屏幕。检查在应用程序包中包含Mono运行时。我将其他选项保留为默认值(平台为X86)。
通过选择Build / Build all来构建捆绑包。这会在bin / Debug文件夹中创建一个MM.app包。
打包器没有将 libgdiplus.dylib 复制到捆绑包中,因此我必须手动执行此操作。 (如果没有此步骤,则无法启动应用程序,并且控制台日志明确指出Mono无法找到libgdiplus)。我将文件 libgdiplus.0.dylib 和链接 libgdiplus.dylib 从/Library/Frameworks/Mono.framework/Libraries文件夹复制到应用程序的Contents / Resources文件夹束。
现在,app bundle是自包含的,它不需要安装Mono运行时。运行时,它会显示消息框。但是在单击“确定”按钮后,程序关闭,Mono运行时崩溃。这是Console日志中的堆栈跟踪:
Native stacktrace:
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2: 0 MM2 0x000a072f mono_handle_native_sigsegv + 287
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2: 1 MM2 0x000058de mono_sigsegv_signal_handler + 334
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2: 2 libsystem_c.dylib 0x9435859b _sigtramp + 43
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2: 3 ??? 0xffffffff 0x0 + 4294967295
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2: 4 CoreFoundation 0x940e4e05 _CFAutoreleasePoolPop + 53
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2: 5 Foundation 0x9386ea2f -[NSAutoreleasePool release] + 131
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2: 6 MM2 0x00002b52 main + 1458
6/8/12 6:11:43.089 PM [0x0-0x26026].com.yourcompany.MM2: 7 MM2 0x00002555 start + 53
答案 0 :(得分:-2)
单击“开”后,程序应该结束。主函数的结尾是应用程序的结束。
如果您有事件循环或做某事 - 它将不会自动结束。