1

MonoMac では、少なくとも ViewController (および理想的には .xib ファイル) をクラス ライブラリ プロジェクトに移動できますか?

これを行おうとすると、XCode 統合が壊れてしまいます。

たとえば、デフォルト プロジェクトでは次のようになります。

  • MainWindowController.cs をクラス ライブラリに移動すると、コンパイルされなくなります (MainWindow クラスが表示されないため)。
  • そこで、MainWindow.cs と MainWindow.designer.cs もクラス ライブラリに移動します。今、私のソリューションはコンパイルされますが、実行されません - コンソールに次のように表示されます:

Interface Builder ファイル内の不明な Window クラス MainWindow、代わりに汎用 Window を作成

MainWindow をキャストしようとして null ポインターでクラッシュする

したがって、.xib とマネージ コードの間のリンクを切断したことは明らかです。もちろん、.xib 自体を移動しても役に立ちません。一度クラス ライブラリ プロジェクトに入ると、すべての「魔法」が失われます (たとえば、ダブルクリックすると、XCode ではなく MD 内のテキストとしてファイルが開きます)。

もちろん、ここで適用できる回避策があります。コントローラーを可能な限り薄く保ち、クラス ライブラリのロジックの上にある非常に薄いラッパーとしてそれらを構築しようとします。でも実際にコントローラーを動かせたら最高です。MonoMac のソースを掘り下げても役に立ちませんでした。明らかに非常に複雑です。

この方法で MonoTouch プロジェクトを構築することに成功したことに注意してください。もちろん、違いは.xibファイルを使用しなかったことです...

私は既に Mono フォーラムに投稿しましたが、応答はありません (http://mono.1490590.n4.nabble.com/MonoMac-project-structure-tp4657231.html)。うまくいけば、私の質問がここでよりよく見えるようになります。


編集:

これはまだ機能しません。最新の MonoDevelop では、この方法でソリューションを作成およびコンパイルできますが、実際の出力は期待どおりに機能しません。デバッガーは決してアタッチしません。MonoMac プロジェクトから MainWindow 定義を削除する (ライブラリ プロジェクトにカスタム ウィンドウ定義を残す) と、同じエラーが発生します。


4

0 に答える 0