クロスプラットフォーム MVVM フレームワーク「MvvmCross」を Mac の Xamarin Studio で使うための準備についてです。
基本は、
のトレース。主には PCL と Nuget が正しく動くようにする手順です。
必要な(というか試した)環境は以下の通り。 (Xamarin の PCL サポートがまだ「進行中」なので、将来的には変わる可能性大)
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)。
ここ の 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
以上で、環境準備は終わり。
うーん、ダメか?
ポータブルクラスライブラリのプロジェクトファイル(xxx.csproj) をテキストエディタで開き、<TargetFrameworkProfile>
の値を Profile104
に書き換える。(修正前は Profile1 になってた。なぜ Profile104 かと言えば、Visual Studio で作った PCL プロジェクトのプロファイルが 104 だったから、という程度の理解レベル)
//xxx.csproj
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>10.0.0</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{50D8E04F-FDE0-4A65-B388-5698BEFE8DC5}</ProjectGuid>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<OutputType>Library</OutputType>
<RootNamespace>Portable2</RootNamespace>
<AssemblyName>Portable2</AssemblyName>
<TargetFrameworkProfile>Profile104</TargetFrameworkProfile> <--Here!!!!!
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
もう一度プロジェクトを開いて Nuget から "MvvmCross - Hot Tuna Starter Pack" を Add すると、成功する。プロジェクトツリーを見ると必要なDLLやソースコードが配置されている。
これで Xamarin Studio でも PCL が使えそう。 MvvmCross の Tutorial - MvvmCross N+1 Table of Context を試せます。