2012-02-22 2 views
3

xib 파일을 포함하는 주 응용 프로그램 어셈블리와 가능하면 xib 파일을 포함하는 라이브러리 어셈블리로 구성된 MonoTouch C# 응용 프로그램을 빌드하는 단계가 무엇인지 알고 싶습니다.명령 행에서 Monotouch 앱 번들을 완전히 빌드하기위한 전체 단계는 무엇입니까?

우리는 여기서 다루지 않을 여러 가지 이유로 적절한 MSBuild 스크립트 (MonoTouch가 아직 지원하지 않음)를 통해 이러한 단계를 자동화하려고합니다. 여기서 질문에 집중하십시오.

1) smcs를 사용하여 각 어셈블리를 컴파일, 예를 들면 : 내가 가지고 올 한 내용

지금까지 여기에

/Developer/MonoTouch/usr/bin/smcs /noconfig 
"/out:/Users/bright/src/MonoTouchAppWithLib/AppLib/bin/Debug/AppLib.dll 
"/r:/Developer/MonoTouch/usr/lib/mono/2.1/System.dll" 
"/r:/Developer/MonoTouch/usr/lib/mono/2.1/System.Xml.dll" 
"/r:/Developer/MonoTouch/usr/lib/mono/2.1/System.Core.dll" 
"/r:/Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll" 
/nologo /warn:4 /debug:+ /debug:full /optimize- /codepage:utf8 
"/define:DEBUG" 
/t:library "/Users/bright/src/MonoTouchAppWithLib/AppLib/Class1.cs" 

2) 인터페이스 정의를 컴파일합니다 각 어셈블리의 각 XIB 파일을 ibtool 실행 예를 들어

/Developer/usr/bin/ibtool 
--errors --warnings --notices --output-format human-readable-text  
"/Users/bright/src/App/App/ViewController_iPhone.xib" 
--compile "/Users/bright/src/App/App/bin/Debug/App.app/ViewController_iPhone.nib" 
--sdk "/Developer/Platforms/iPhoneSimulator.platform/Developer/ 
SDKs/iPhoneSimulator4.3.sdk" 

3) 네이티브 코드로 컴파일 : 그러나

/Developer/MonoTouch/usr/bin/mtouch 
-sdkroot "/Applications/Xcode.app/Contents/Developer" 
-v --nomanifest --nosign -sim 
"/Users/bright/src/App/App/bin/iPhoneSimulator/Debug/App.app" 
-r "/Users/bright/src/App/AppLib/bin/Debug/AppLib.dll" 
-r "/Developer/MonoTouch/usr/lib/mono/2.1/System.dll" 
-r "/Developer/MonoTouch/usr/lib/mono/2.1/System.Xml.dll" 
-r "/Developer/MonoTouch/usr/lib/mono/2.1/System.Core.dll" 
-r "/Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll" 
-debug -profiling -nolink -sdk "5.0" 
"/Users/bright/src/App/App/bin/iPhoneSimulator/Debug/App.exe" 

, 그것은 '외설 다음 순서 (MonoDevelop의 빌드 출력 창에서 가져온 것)를 수행하는 방법을 명확히 지정하고 어떤 순서로

1) 포함 된 콘텐츠를 추출합니다. MonoDevelop는이 출력 :

Extracted HelloWorldScreen_iPhone.nib from MtLib.dll 
Extracted HelloWorldScreen_iPad.nib from MtLib.dll 

2) 응용 프로그램 매니페스트 업데이트 : 출력 창을 구축 MonoDevelop에 주어진 어떤 명령 줄이 없습니다.

3) 디버그 구성 파일 업데이트 : MonoDevelop 빌드 출력 창에 명령 줄이 없습니다.

4) 디버그 설정 파일 업데이트 : MonoDevelop 빌드 출력 창에 명령 줄이 없습니다.

다른 단계는 아직 앱 서명 및 리소스를 좋아하지 않습니다.

희망을 갖고 여기서 정보를 얻을 수 있기를 바랍니다.

답변

3

터미널 창에서 또는 MSBuild 작업 내에서 MonoDevelop와 함께 제공되는 도구를 실행할 수 있습니다. 예 :

/Applications/MonoDevelop.app/Contents/MacOS/mdtool -v build -t:Build "-c:Debug|iPhoneSimulator" /path/to/your/app.csproj 

위의 모든 단계와 향후 추가 될 기능을 포함하여 MonoTouch 응용 프로그램이 빌드됩니다.

+0

아니요, 제가 물어 본 것은 아닙니다. 실제 단계를 실행하는 MSBuild 스크립트를 만들어야합니다. 다른 말로하면, 결코 효과가없는 "실험적"msbuild/xbuild 설정에서 MonoDevelop 작업이 필요합니다. 이것은 msbuild와의보다 큰 통합 프로세스의 일부입니다. – bright

+1

위의 설명이 확실한지 확인하기 위해 Monotouch는 표준 개발을 위해 .csproj 파일을 사용하지만 msbuild/xbuild를 통해 실행하지 않습니다. 대신 그것은 단지 할 수있는 것을 파싱하고 나머지는 남겨 둡니다. 사람이 빌드 프로세스를 확장하려고하면 결과가 예측할 수없는 혼란입니다. csproj는 단순히 존중되지 않습니다. 우리가하려고하는 것은 Monotouch가 "언젠가는 미래"에 할 계획 인 것입니다 - 더 큰 워크 플로우의 일부가 될 수있는 실제 MSBuild 환경. – bright

+1

MonoDevelop IDE (명령 줄에서) 밖에서 MonoTouch 응용 프로그램을 * 빌드 할 수있게하는 것은 * 현재 ** 유일한 ** 완전한 ** 일련의 단계입니다. 'mtouch'도구에는 몇 가지 옵션이 있습니다 (예 :매니 페스트 및 서명)은 MD 외부에서 사용될 수 있지만 (MD가 자체 코드를 사용하더라도) MD 추가 기능이 수행하는 모든 단계를 다루지는 않습니다 (특정 상황에서만 발생하는 경우도 있음). – poupou