クロスプラットフォーム MVVM フレームワーク「MvvmCross」を Mac の Xamarin Studio で使うための準備についてです。

基本は、

のトレース。主には PCL と Nuget が正しく動くようにする手順です。

前提条件

必要な(というか試した)環境は以下の通り。
(Xamarin の PCL サポートがまだ「進行中」なので、将来的には変わる可能性大)

  • Xamarin Studio Version 4.0.10 (beta)
  • Xamarin.Android Version: 4.8.0 (beta)
  • Xamarin.iOS Version: 6.3.8.11 (beta)
  • Xamarin Studio Add-in NuGet Package Management Version 0.5
  • Mac OS X 10.8.4

手順

Xamarin Studio

  1. Mac に Xamarin Studio を入れて、Beta チャンネルに切り替えて更新。
  2. アドインマネージャから NuGet Package Management をインストール。

.NETPortable DLLs を Win機からコピってくる

Win機の C:¥Program Files (x86)¥Reference Assemblies¥MicrosoftFramework.NETPortable を、Mac の /Library/Frameworks/Mono.framework/External/xbuild-frameworks/.NETPortable/ へコピー。

Win機がない場合は、これ などで Win仮想環境を作り、Visual Studio Ultimate 2012 90日間試用版 を入れるとよい(Express 版は上記DLLsがないのでNG)。

Nuget にパッチをあててビルド

ここPatch to Nuget.Core.dll: にあるテキストを適当なファイルに保存(ここでは patch.diff とする)して、以下のコマンドを実行。

git clone https://git01.codeplex.com/nuget
cd nuget
git checkout -b 2.6 origin/2.6 

patch -p1 < patch.diff

cd src/Core
xbuild

cp bin/Debug/NuGet.Core.dll  ~/Library/Application\ Support/XamarinStudio-4.0/LocalInstall/Addins/MonoDevelop.PackageManagement.0.5/NuGet.Core.dll

以上で、環境準備は終わり。

試す

  1. Xamarin Studio で Portable Class Library を作成する
  2. プロジェクト設定を見ると Xamarin.Android、Xamarin.iOS などがあるが、これらをチェックしてOKしても適用されてない
  3. Nuget Manager から mvvmcorss で検索して “MvvmCross - Hot Tuna Starter Pack” を Add してもエラーになる。

うーん、ダメか?

プロジェクトファイルをちょっと修正する

ポータブルクラスライブラリのプロジェクトファイル(xxx.csproj) をテキストエディタで開き、<TargetFrameworkProfile> の値を Profile104 に書き換える。(修正前は Profile1 になってた。なぜ Profile104 かと言えば、Visual Studio で作った PCL プロジェクトのプロファイルが 104 だったから、という程度の理解レベル)

```xml xxx.csproj

Debug AnyCPU 10.0.0 2.0 {50D8E04F-FDE0-4A65-B388-5698BEFE8DC5} {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Library Portable2 Portable2 Profile104 <--Here!!!!! v4.0 true ``` ## 再度試す もう一度プロジェクトを開いて Nuget から "MvvmCross - Hot Tuna Starter Pack" を Add すると、成功する。プロジェクトツリーを見ると必要なDLLやソースコードが配置されている。 これで Xamarin Studio でも PCL が使えそう。 MvvmCross の Tutorial - [MvvmCross N+1 Table of Context](http://mvvmcross.wordpress.com/) を試せます。
Xamarin
MvvmCross
C#

published

Ads

Read more!

amay077

Microsoft MVP(Xamarin). フルリモートワーカー. Geospatial Mobile app developer. Love C#.

amay077 amay077