メインメニューを開く

差分

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

2,905 バイト追加, 2015年5月7日 (木) 09:37
ページの作成:「===問題点=== Xamarin.Mac 1.0のすべて、およびXamarin.Mac 2.0のIndieライセンスでは、Portable Class LibraryとXamarin.Macライブラリしか扱...」
===問題点===
[[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.Mac]]は[[Xamarin.iOS]]のように[[Windows]]上の[[Visual Studio]]でビルドということができず、また[[Mac]]上の[[Xamarin Studio]]ではWindows 8.1系など向けのビルドができない。つまりXamarin.MacとWindows 8.1などに両対応したパッケージを作るのが非常に面倒なためである。これらの理由により[[GitHub]]などでPull Requestしても後々の管理が面倒すぎてXamarin.Mac対応については却下されるのが定番となっている。すると必然的に自前で管理する必要がでてくる。自前での管理も[[Php Nuget Server]]<ref>http://www.kendar.org/?p=/dotnet/phpnuget</ref>あたりを使えば楽勝である。

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

===NuGetパッケージの作り方===
NuGetパッケージは以下のようなディレクトリ構造となっており、もっとも一致するディレクトリ内のDLL群が参照される。
バージョンはコロンなし。
プロファイルは.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が放り込まれていればよいだけである。

==関連項目==
*[[NuGet]]

==参考文献==
{{reflist}}

{{stub}}

[[category:MonoMac]]
[[category:Xamarin.Mac]]
匿名利用者