Xamarin.Mac/NuGetパッケージを作る

提供: MonoBook
移動: 案内検索

問題点[編集]

Xamarin.Mac 1.0のすべて、およびXamarin.Mac 2.0のIndieライセンスでは、Portable Class LibraryとXamarin.Macライブラリしか扱えないという制約がある。 この制約によりNuGet公式サイトで配布されているパッケージは壊滅的に利用できない。 なお、Xamarin.Mac 2.0のBusiness以上では.NET Framework 4.5のライブラリをサポートしているのでこんな面倒なことはする必要がない。

解決策[編集]

仕方がないのでXamarin.Macに対応した自前NuGetパッケージを作り直し、自前NuGetサーバーで管理するのが得策だと思われる。 NuGet公式サイトにあるパッケージは100%オープンソースが保証されているのでソースコードを拾ってきてXamarin.Macに対応させるのが手っ取り早い。

なお、自前NuGetサーバーで管理する理由は、Xamarin.MacXamarin.iOSのようにWindows上のVisual Studioでビルドということができず、またMac上のXamarin StudioではWindows 8.1系など向けのビルドができない。つまりXamarin.MacとWindows 8.1などに両対応したパッケージを作るのが非常に面倒なためである。これらの理由によりGitHubなどでPull Requestしても後々の管理が面倒すぎてXamarin.Mac対応については却下されるのが定番となっている。すると必然的に自前で管理する必要がでてくる。自前での管理もPhp Nuget Server[1]あたりを使えば楽勝である。

Windows PhoneWindows 8などを考慮しなければ、オリジナルのソースコードをPortable Class LibraryやXamarin.Macライブラリプロジェクトあたりに作り変えてXamarin.Mac, Xamarin.iOS, Xamarin.AndroidあたりのMac上のXamarin Stuidoだけで扱えるかたちにしておくと捗る。

NuGetパッケージの作り方[編集]

NuGetパッケージは以下のようなディレクトリ構造となっており、もっとも一致するディレクトリ内のDLL群が参照される

  • プラットフォーム一覧はググれ(Xamairin.Macは「Xamarin.Mac」)。
  • バージョンはコロンなし。
  • プロファイルは.NET Framework 4.0で使われた「Full」だの「Client」だのなので省略して構わない。
./lib/{プラットフォーム}{バージョン}-{プロファイル}/hagehage.dll

たとえば.NET Framework 4.5のライブラリであれば以下のようになる。

./lib/net45/hagehage.dll

これをXamarin.Mac 2.0向けにすると以下のようになる。

./lib/Xamarin.Mac20/hagehage.dll

つまり「lib/Xamarin.Mac20/」ディレクトリの中にDLLが放り込まれていればよい。

関連項目[編集]

参考文献[編集]