こんにちは。エクセルソフトの田淵です。
Visual Studio で Xamarin でアプリを開発する際に、PCL (Portable Class Library) の Profile を指定する指針になればと思い、ざっくりと調べました。
PCL (Portable Class Library) について
PCL はプラットフォーム間でソースを共有する仕組みの一つです。
PCL (Portable Class Library) と Xamarin については 榎本さん の BuildInsider 連載 をご覧頂くのが良いかと思います。
Xamarin のソース共通化の手法としては、PCL の他に Visual Studio 2013 Update 2 以降でサポートされている ユニバーサルアプリ で使われている Shared Project があります。詳細については以下をご参照ください。
- PCL (Portable Class Library) - Xamarin 3 の新しいコード共有テクニック : XLsoft エクセルソフト
- Shared Project - Xamarin 3 の新しいコード共有テクニック : XLsoft エクセルソフト
PCL (Portable Class Library) は対象とするプラットフォームの組み合わせによって、いくつもの Profile があります。逆に言うとプロファイル以外の組み合わせは出来ません。
Visual Studio の UI からはどの Profile かは見えませんが、.csproj
にはその情報が記載されています。
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> ...略... <TargetFrameworkProfile>Profile78</TargetFrameworkProfile> <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> </PropertyGroup>
Visual Studio / Xamarin Studio で Xamarin.Forms プロジェクトを作成した際のデフォルトの Profile は、Windows Phone Sliverlight 8 のプロジェクトがセットのため 78 になっていて、Xamarin Native Portable プロジェクトを作成した際のデフォルトの Profile は Winsows Phone 8.1 (WinRT) がセットのため 111 になっています。Profile 78 を Xamarin Studio から見ると、対応プラットフォーム (PF) は以下のように .NET 4.5, Windows Phone 8 or later, Windows 8, Windows Phone Silverlight 8, Windows Store apps (Windows 8), Xamarin.Android, Xamarin.iOS Classic, Xamarin.iOS Unified, Xamarin.Mac Unified となっています。全部入りですね笑。
Profile は以下のように沢山あります。
.NET 4.5 に対応する Profile 7, 49, 78, 111, 259 なのですが、Visual Studio の UI 上からは Profile は分からないので、.NET 4.5 に対応した Profile だけ以下にチェック項目を纏めてみました。私の Windows 8.1 / Visual Studio 2013 Update 4 の環境で Xamarin Studio のに比べてチェック項目が少ないのは、Windows 8 (WPF?) と Windows Store apps (Windows Runtime?) とかが一緒になってたり、Mac が無かったりしているのではないかな?と思います。詳しい方は教えてほしいです。。
Profile | VSチェック項目 | 対応PF(Macでチェック) |
---|---|---|
Profile 7 | ||
Profile 49 |
|
|
Profile 78 | ||
Profile 111 | ||
Profile 259 |
どの Profile を使用するべき?
対象としたいプラットフォームによって選択してください。
PCL は仕組みとして組み合わせが増えれば使える機能が減っていきます。特に、Windows Store アプリや Sliverlight は制限が多いようです。
2015/11/1 追記:
2015/3 にリリースされた Xamarin.Forms for Windows を使用したい場合 (Xamarin.Forms for Windows を使ってみた - Xamarin 日本語情報 を参照) は Profile 259、Xamarin ネイティブのロジックを Windows Store アプリと共通化したい場合は Profile 7, 111, 259 のどれかを指定することになるかと思います。
また、2015/10 に Preview がリリースされた Xamarin.Forms for UWP を使用したい場合 (【速報】Xamarin.Forms for UWP Preview 版がリリースされました - Xamarin 日本語情報 を参照) は、Profile 111 が良いでしょう。
Xamarin 気になった方は
是非 ダウンロード(直接) / ダウンロード(弊社経由) して触ってみてください。 学習用リソース や JXUG リンクページ に参考資料を纏めてますので併せてどうぞ。
Xamarin の情報が欲しい方はこのブログも購読いただいたりすると嬉しいです。
以上です。