読者です 読者をやめる 読者になる 読者になる

Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

Visual Studio で Xamarin の PCL プロジェクトのプロファイルを変更すると「プロジェクトのターゲットを変更できません」というエラーが表示される場合の対象方法

Xamarin Visual Studio

こんにちは。エクセルソフトの田淵です。

2016/10/7 加筆修正しました

Xamarin.Forms や Xamarin ネイティブ(Xamarin.iOS, Xamarin.Android での開発)では、ロジックを共通化する手法として、PCL(Portable Class Library、ポータブルクラスライブラリ)の手法と Shared Project という手法が使われています。この PCL プロジェクトに共通ロジックを記述することで Xamarin はコード共有を図っています。PCL、Shared Project については本エントリー下部に参考リンクを纏めましたので、ご参照ください。

さて、PCL でプロジェクトを作成すると、PCL のターゲット OS の組み合わせで、プロファイルが決まります。各プロファイルでビルドしたライブラリは、ターゲット OS で動作することが保証されているため、PCL に対応したライブラリは、各プロファイルに対応したバイナリを用意してあります。

例えば PCL プロジェクトに Json.NET をインストールすると次のような出力がされます。

'.NETPortable,Version=v4.5,Profile=Profile7' を対象とするプロジェクト 'App1' に関して、パッケージ 'Newtonsoft.Json.9.0.1' の依存関係情報の収集を試行しています
DependencyBehavior 'Lowest' でパッケージ 'Newtonsoft.Json.9.0.1' の依存関係の解決を試行しています
パッケージ 'Newtonsoft.Json.9.0.1' をインストールするアクションを解決しています
パッケージ 'Newtonsoft.Json.9.0.1' をインストールするアクションが解決されました
パッケージ 'Newtonsoft.Json.9.0.1' をフォルダー 'C:\_dev\VS\App1\packages' に追加しています
パッケージ 'Newtonsoft.Json.9.0.1' をフォルダー 'C:\_dev\VS\App1\packages' に追加しました
パッケージ 'Newtonsoft.Json.9.0.1' を 'packages.config' に追加しました
スクリプト ファイル 'C:\_dev\VS\App1\packages\Newtonsoft.Json.9.0.1\tools\install.ps1' を実行しています...

Profile=Profile7 と書かれているのがプロファイルで、この場合は 7 となります。

2016/10/7 現在、Visual Studio で Xamarin.Forms「Blank App (Xamarin.Forms Portable)」のテンプレート、Xamarin ネイティブ「Blank App (Native Portable)」のテンプレートでプロジェクトを作成したプロファイルは共に 259 のようです。(環境によりプロファイルが違う可能性あり。)

f:id:ytabuchi:20161007171231p:plain:w450

プロファイルを確認、変更するには「移植可能」と書かれた PCL プロジェクトのプロパティを表示し、「ライブラリ」ペインの「変更」ボタンをクリックします。

f:id:ytabuchi:20161007171530p:plain:w450

チェックボックスでターゲットを変更し、「OK」をクリックするとプロファイルを変更できるのですが、既にプロジェクトに PCL 対応のライブラリがインストールされていると以下のエラーが出ます。Xamarin.Forms は PCL 対応ライブラリのため、Xamarin.Forms プロジェクトのプロファイルを変更すると必ずこのエラーが出ます。

f:id:ytabuchi:20151102132847p:plain:w450

この場合の対処方法を記載します。

その1:NuGet パッケージを一度アンインストールして Profile を変更し、再度インストールする

ダイアログにも書いてありますが、一度 Xamarin.Forms などのパッケージをアンインストールしてください。

f:id:ytabuchi:20161007173252p:plain:w450

その後、Profile を変更して、最新版を再インストールします。

f:id:ytabuchi:20161007173436p:plain:w450

以上で完了です。

または

最新の Xamarin.Forms を、標準で System.Net.HttpClient が使用できる Profile 111 を指定した Xamarin.Forms のプロジェクトテンプレートを用意していますので、そちらをご利用いただいても構いません。

github.com

PCL、Shared Project についての参考資料

www.buildinsider.net

ytabuchi.hatenablog.com

ytabuchi.hatenablog.com

PCL (Portable Class Library) - Xamarin 3 の新しいコード共有テクニック : XLsoft エクセルソフト

Shared Project - Xamarin 3 の新しいコード共有テクニック : XLsoft エクセルソフト

Xamarin 気になった方は

是非 ダウンロード して触ってみてください。Visual Studio 2015 をご利用の方は Update 3 にアップデートする際にカスタムインストールで Xamarin を追加しましょう。 学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の導入支援サービスを始めました。ベースは基本的なアプリを一緒に作ることで Xamarin を使えるようになって頂く内容ですが、ご要望に応じて講習内容のカスタマイズも可能です。詳しくは田淵までお問い合わせください(^^)

ytabuchi.hatenablog.com

Xamarin の情報が欲しい方はこのブログも購読いただいたり、私のTwitterアカウントをフォローいただいたりすると嬉しいです。

私が所属している エクセルソフト の宣伝を少しさせてください。弊社は開発者向けの様々なソフトウェアを扱っています。おなじみの ReSharper (JetBrains)、 や Atlassian の JIRA, Confluence、Office/PDF ファイルを .NET/Java で操作するライブラリ Aspose(アスポーズ)Windows アプリ、Web ページ、iOS/Android アプリの UI テストができる TestComplete などお勧めです(^^) また、Visual Studio Professional/Enterprise with MSDN も販売してますし、日本で売っていない海外のソフトウェア、開発ツールなどを弊社経由で日本円で購入頂くことも可能です。ご興味あれば 弊社ページ を覗いてみてください。

以上です。