Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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変更の予定もあるようなので,しばらく待てばこの状況は解消されるはずです。きっと。

ailen0ada
Xamarin.Mac の人です。
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした