Visual Studio for MacでXamarinのプロジェクトを作成し、iPhoneのシミュレータ上で動かそうとしたときに、次の様なエラーが発生しました。
今回はこの解決方法について紹介します。
開発環境
まず、今回はAzure Active Directory B2Cと呼ばれる認証サービスを利用するアプリのサンプルをここからダウンロードしました。
ダウンロードしたプロジェクトをVisual Studio for Mac v8.5.4で開き、Azure AD B2Cの作成とその内容をプロジェクトに設定する方法は、ここに書かれた手順に従いました。
エラーが発生した状況とその原因
今回、Azure AD B2Cの設定が完了したあと、iOSプロジェクトをiPhoneシミュレータ上でデバッグする様に、Visual Studioで実行したときに最初に紹介したエラーが発生しました。
原因を調査したところ、iOSのプロジェクトにApple Developer Bundle Identifierが設定できていないことが原因であることがわかりました。エラーメッセージには、ここを参照する様に書かれていますが、何が問題なのかをどこをみたら良いのかがわかりませんでした。
エラーの解決方法
Visual Studio for Macには、Preferencesのウインドウを立ち上げると、XCodeのようにApple IDでログインしてアプリ用のProvisioning Profileを自動で作成するように動く機能はあるのですが、ログインはできるが、次のようなエラーが発生し、Certificationは生成することができないと言う状態です。
今回は、このエラーを解決する方法を紹介します。解決する方法と言っても、完全に起こらなくする方法ではなく、今回のプロジェクトでは起こらなくする方法です。新しい別のプロジェクトを作成した場合は、同じようなことが起こる可能性があります。
まず、ソリューションに含まれる複数のプロジェクトの中で、.iOSで終わるプロジェクトを開きます。そして、その中にあるinfo.plistを開きます。
そこで、Automatic Provisioningを選択してもProvisioning Profileを生成できず、次のように先に紹介した同じエラーが発生してしまいます。
実現方法は単純で、XCodeでBundle Identifiersが同じになるプロジェクトを作り、Provisioning Profileを生成したいTeam IDと紐付けてProvisioning Profileを生成することで作成できる。
さらに、それをVisual Sudioで認識するため、Signing Schemeは、Manual Provisioningを選択する。そして、「Bundle Signing Options..」と言うボタンを押し、現れたウインドウで次のように入力する。
まず、Signing Identityに、先ほどProvisioning Profileを生成したTeam IDを選択する。次に、Provisioning ProfileにXCodeで生成したProvisioning Profileを選択する。さらに、Custom Entitlementsに予めプロジェクトに含まれるEntitlements.plistを選択する。
そして、プロジェクトのデバッグを開始ボタンを押すと、iPhoneシミュレータでアプリを起動することが可能になる。
参考サイト