Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@ailen0ada

Xamarin.Mac+MvvmCrossでアプリ開発を始める準備の準備(2014年3月)

Problem

Xamarin.Android, Xamarin.iOSの話ばかりでXamarin.Macの話題がなかなか出ません。
ということでMvvmCrossを使ってXamarin.Macアプリ開発をする準備の準備です。これでようやくスタートラインに立てます。

3.1.1時点のNuSpecではXamarin.MacプロジェクトにMvvmCrossを追加すると・・・
Screen Shot 2014-03-03 at 4.32.58 PM.png
これではもうどうしようもありません。ちなみにMonoMacプロジェクトでも同様です。現在NuSpecにMonoMac, XamMacの記述はありません。

Build

ビルドしましょう。リポジトリを下記GitHubからクローンします。
https://github.com/MvvmCross/MvvmCross
開くのはMvvmCross_Mac.slnです。
kobito.1393832441.136574.png
FirstDemo,ApiExamplesプロジェクトについてXamarin.Macに移行するか確認されます。インストールされていれば,Migrateしておきましょう。

初期状態でビルドできるもの

Cirrious.CrossCore
Cirrious.MvvmCross
Cirrious.MvvmCross.Binding
Cirrious.MvvmCross.Localization
Cirrious.MvvmCross.Mac
System.Windows.Mac

MSBuildエンジンではビルドできないもの

kobito.1393832702.160555.png
Use MSBuild build engineのチェックボックスをオフにします。
Cirrious.CrossCore.Mac
Cirrious.MvvmCross.Binding.Mac

Try

ではApiExamples.Macプロジェクトをビルド,実行してみましょう。
事前にApiExamples.MacプロジェクトのTarget FrameworkをMono/.NET 4.5に変更しておいてください。すると・・・
Untitled.png

AppDelegate.cs(37,37): Error CS0012: The type `MonoMac.AppKit.NSApplicationDelegate' is defined in an assembly that is not referenced. Consider adding a reference to assembly `MonoMac, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' (CS0012) (ApiExamples.Mac)

そうです。Xamarin.MacではMonoMacネームスペースをXamMac.dllで提供していますが,MvvmCrossライブラリが参照しているのはGPLのほうのMonoMacです。

Solution

MonoMacではMonoランタイム同梱ができないし,ライセンス的にも商用では大変困ります。
MonoMacを参照しているプロジェクト全てに対し,MonoMacからXamMac.dllへ参照を変更します。XamMac.dllは適当なXamarin.Macプロジェクトをビルドすれば配置されるのでこれを使うことにします。kobito.1393833604.628030.png
こんな具合に下記の3プロジェクトを書き換えてください。コピー&ペーストが使えます。
Cirrious.CrossCore.Mac
Cirrious.MvvmCross.Binding.Mac
Cirrious.MvvmCross.Mac

では再度ApiExamples.Macをビルド,実行しましょう。
Screen Shot 2014-03-03 at 5.06.05 PM.png

できました。しかしこのままではリリースビルドできません。
Screen Shot 2014-03-03 at 5.08.29 PM.png
Don't Link,またはLink Framework SDKs Onlyに変更してください。

できあがったDllを参照すれば自分のプロジェクトでMvvmCrossを使えるようになります。

Conclusion

Xamarin.Macが大好きです。
MvvmCross 3.1.2ではNuSpec変更の予定もあるようなので,しばらく待てばこの状況は解消されるはずです。きっと。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
9
Help us understand the problem. What are the problem?