Help us understand the problem. What is going on with this article?

Xamarin Studio で MvvmCross を使うための準備 2013年7月版

More than 3 years have passed since last update.

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

当エントリの情報は古くなってしまったので、現在は、 @iseebi さんの

をご覧ください。

基本は、

のトレース。主には 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しても適用されてない img1
  3. Nuget Manager から mvvmcorss で検索して "MvvmCross - Hot Tuna Starter Pack" を Add してもエラーになる。img1

うーん、ダメか?

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

ポータブルクラスライブラリのプロジェクトファイル(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 を試せます。

amay077
ランチの時は呼ぶといい!
https://blog.amay0777.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away