「Xamarin.Mac/NuGetパッケージを作る」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「===問題点=== Xamarin.Mac 1.0のすべて、およびXamarin.Mac 2.0のIndieライセンスでは、Portable Class LibraryとXamarin.Macライブラリしか扱...」)
 
 
13行目: 13行目:
  
 
===NuGetパッケージの作り方===
 
===NuGetパッケージの作り方===
NuGetパッケージは以下のようなディレクトリ構造となっており、もっとも一致するディレクトリ内のDLL群が参照される。
+
NuGetパッケージは以下のようなディレクトリ構造となっており、もっとも一致するディレクトリ内のDLL群が参照される
バージョンはコロンなし。
+
*プラットフォーム一覧は[[ググれ]](Xamairin.Macは「Xamarin.Mac」)。
プロファイルは.NET Framework 4.0で使われた「Full」だの「Client」だのなので省略して構わない。
+
*バージョンはコロンなし。
*lib/{プラットフォーム}{バージョン}-{プロファイル}/hagehage.dll
+
*プロファイルは.NET Framework 4.0で使われた「Full」だの「Client」だのなので省略して構わない。
 +
./lib/{プラットフォーム}{バージョン}-{プロファイル}/hagehage.dll
  
 
たとえば.NET Framework 4.5のライブラリであれば以下のようになる。
 
たとえば.NET Framework 4.5のライブラリであれば以下のようになる。
*lib/net45/hagehage.dll
+
./lib/net45/hagehage.dll
  
 
これをXamarin.Mac 2.0向けにすると以下のようになる。
 
これをXamarin.Mac 2.0向けにすると以下のようになる。
*lib/Xamarin.Mac20/hagehage.dll
+
./lib/Xamarin.Mac20/hagehage.dll
  
つまり「lib/Xamarin.Mac20」の中にDLLが放り込まれていればよいだけである。
+
つまり「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.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が放り込まれていればよい。

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]