私は現在、ASP.NET Web サイト、Windows Phone アプリ、および Windows 8 Metro アプリから使用しているサービス レイヤーと API を構築しました。これらすべての鍵は、移植可能なクラスであるモデル クラスを含むプロジェクトです。ライブラリ プロジェクトであり、それらすべての間で参照として共有されます。このアーキテクチャは問題なく正常に動作します。
しかし、私は最近、Xamarin の実験を始めました。具体的には iOS の機能です (後で Android に移行することを視野に入れています)。私の当初の想定では、このモデル ライブラリを他のプロジェクトと同じように利用できると思っていましたが、そうではないことに気づきました。
モデル クラス ライブラリへの参照を (Visual Studio で) Xamarin.iOS プロジェクトに最初に追加したとき、次のエラーが表示されました。
「現在のプロジェクトは、ポータブル ライブラリ プロジェクトへの参照をサポートしていません」。
奇妙なことに、これはサポートされるシナリオだと思っていました。ここで、Visual Studio が Monotouch (Xamarin) フレームワークをポータブル ライブラリ プロジェクトのサポートとして強制的に検出する修正を提案する投稿を見つけました。まさに私が必要としているもののように見えましたが、違います。参照を再度追加すると、別のエラーが表示されました。
「現在のプロジェクトのターゲット フレームワークは、ポータブル ライブラリ プロジェクトのターゲット フレームワークと互換性がありません」。
そして、プロジェクトのプロパティでターゲット フレームワークを変更することをお勧めします。ただし、Xamarin iOS プロジェクトは Monotouch をサポートする必要があるためです (また、GUI から他のものに変更することはできません)。そこで、代わりにモデル ライブラリのプロパティを変更しようとしました。そこで何かできるかもしれません。そして、それは私ができるように見えました。ここで、サポートされているプラットフォームとして Monotouch (Xamarin) をチェックできます (Windows phone、Windows ストアなどは既にチェックされています) が、保存できません。次のメッセージが表示されるだけです。
「選択したターゲット フレームワークでサポートされている追加機能はありません」
いくつかの調査の結果、Xamarin がコードを共有するために提案する唯一の方法は、リンクされたコード ファイルを含む個別のプロジェクトを使用することであることがわかりました (したがって、実際には、疑似単一のコード ベースです。私が試したところ、うまくいきましたが、ハックのようです。ここ:
これが唯一のオプションですか?または、Microsoft や Xamarin を含むすべてのプラットフォームで真の単一クラス (モデル) ライブラリを使用する方法はありますか?