MonoDevelop 3.0.2로 간단한 App 번들을 생성하려고합니다.Windows Forms 프로젝트에 Mono를 임베드하면서 OSX App 번들 생성하기
새 솔루션을 만듭니다 빈 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입니다).
모두 빌드/빌드를 선택하여 번들을 빌드하십시오. 이렇게하면 bin/Debug 폴더에 MM.app 번들이 만들어집니다.
포장기가 libgdiplus.dylib을 번들에 복사하지 않았으므로 수동으로해야합니다. (이 단계가 없으면 응용 프로그램을 시작할 수 없으며 콘솔 로그에 Mono가 libgdiplus를 찾을 수 없다는 내용이 명확하게 표시됩니다). libgdiplus.0.dylib 및 libgdiplus.dylib 파일을 /Library/Frameworks/Mono.framework/Libraries 폴더에서 응용 프로그램 번들의 Contents/Resources 폴더로 복사했습니다.
이제 앱 번들 자체가 포함되어 있으므로 Mono 런타임을 설치할 필요가 없습니다. 실행하면 메시지 상자가 표시됩니다. 그러나 확인 단추를 클릭하고 프로그램이 종료되면 Mono 런타임이 충돌합니다. 다음은 콘솔 로그의 스택 추적입니다.
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