「Xamarin.Mac/NuGetパッケージを作る」の版間の差分
(ページの作成:「===問題点=== Xamarin.Mac 1.0のすべて、およびXamarin.Mac 2.0のIndieライセンスでは、Portable Class LibraryとXamarin.Macライブラリしか扱...」) |
|||
13行目: | 13行目: | ||
===NuGetパッケージの作り方=== | ===NuGetパッケージの作り方=== | ||
− | + | NuGetパッケージは以下のようなディレクトリ構造となっており、もっとも一致するディレクトリ内のDLL群が参照される | |
− | バージョンはコロンなし。 | + | *プラットフォーム一覧は[[ググれ]](Xamairin.Macは「Xamarin.Mac」)。 |
− | プロファイルは.NET Framework 4.0で使われた「Full」だの「Client」だのなので省略して構わない。 | + | *バージョンはコロンなし。 |
− | + | *プロファイルは.NET Framework 4.0で使われた「Full」だの「Client」だのなので省略して構わない。 | |
+ | ./lib/{プラットフォーム}{バージョン}-{プロファイル}/hagehage.dll | ||
たとえば.NET Framework 4.5のライブラリであれば以下のようになる。 | たとえば.NET Framework 4.5のライブラリであれば以下のようになる。 | ||
− | + | ./lib/net45/hagehage.dll | |
これをXamarin.Mac 2.0向けにすると以下のようになる。 | これをXamarin.Mac 2.0向けにすると以下のようになる。 | ||
− | + | ./lib/Xamarin.Mac20/hagehage.dll | |
− | つまり「lib/Xamarin. | + | つまり「lib/Xamarin.Mac20/」ディレクトリの中にDLLが放り込まれていればよい。 |
==関連項目== | ==関連項目== |
2015年10月15日 (木) 06:55時点における最新版
問題点[編集 | ソースを編集]
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[1]あたりを使えば楽勝である。
Windows PhoneやWindows 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が放り込まれていればよい。