2012-06-08 2 views
1

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.dyliblibgdiplus.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 

답변

-2

확인을 클릭하면 프로그램이 종료됩니다. 주요 기능의 끝은 응용 프로그램의 끝입니다.

이벤트 루프가 있거나 뭔가를하면 자동 종료되지 않습니다.