2012-02-22 80 views
3

我想知道完整的一套步驟是建立一個MonoTouch C#應用程序,它由包含xib文件的主應用程序集和一組庫文件組成的庫組件組成。從命令行完整構建Monotouch應用程序包的完整步驟是什麼?

我們試圖通過自動化適當的MSBuild腳本,這些步驟(其中的MonoTouch尚未支持),對此我不會去到各種原因,把重點放在這個問題在這裏。

到目前爲止,這是我想出來的:

1)使用的SMC編輯各個組件,例如

/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任務內,則/Applications/MonoDevelop.app/Contents/MacOS/mdtool工具,其與供給的MonoDevelop。例如。

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

這將構建MonoTouch應用程序,包括上述所有步驟以及將要添加的任何未來功能。

+0

不,這不是我問的。我需要*創建一個運行實際步驟的MSBuild腳本。換句話說,我需要讓MonoDevelop在「實驗性」msbuild/xbuild設置中工作,這從未奏效。這是使用msbuild進行更大集成過程的一部分。 – bright 2012-02-22 13:34:31

+1

只是爲了確保上面的評論是明確的:Monotouch使用.csproj文件進行正常開發,但不通過msbuild/xbuild運行。相反,它只是解析它可以做的事情,並留下剩下的事情。當人們試圖擴展構建過程時,結果是不可預知的混亂 - csproj根本無法實現。我們正在努力做的是Monotouch計劃在未來的某個時間做什麼 - 這是一個真正的MSBuild環境,可以成爲更大型工作流程的一部分。 – bright 2012-02-22 13:39:58

+1

這是*目前唯一的**完整**步驟集,允許您在MonoDevelop IDE之外(在命令行上)構建任何* MonoTouch應用程序。 'mtouch'工具有一些選項(例如清單和簽名)在MD之外使用(即使MD使用它自己的代碼),但不包括MD插件所做的每個步驟(某些只發生在特定情況下)。 – poupou 2012-02-22 14:16:54