FC2ブログ

記事一覧

Visual Studio 2019 における Xamarin.iOS バージョンの設定について | Xamarin


最近は iOS13 の対応や 毎年更新になっている Andorid ターゲットフレームワークの対応に迫られ、Visual Studio 2019 の開発環境を準備しています。
その際、突如 Xamarin.iOS が更新され、iOS アプリのビルドができなくなってしまいましたのでその際の覚え書きをします。

Visual Studio 2017 以降から Xamarin 関連のモジュールが自動アップデート方式に変更された為、最近では Xamarin のバージョンについて意識している人も少なく、よく知らない方もいらっしゃるかもしれません。
Visual Studio 2015 の頃は Xamarin を手動で更新していましたので、バージョンを固定することで、更新による意図しないバグの発生やトラブル等に巻き込まれることはあまりありませんでした。(ただ、一度更新してしまうと今よりもバグの発生やトラブル率はかなり高いものではありましたが。。。)


前提条件
・Windows10 Pro 64Bit 1903
・Visual Studio 2019 Community
・Xamarin 16.4.000.311 (NuGet Xamarin.Forms 3.4.0.1029999)
・macOS Mojave 10.14.6 / Xcode 11.3.1 / Xamarin.iOS 13.10.0.17



1.Xamarin.iOS の更新方法

Visual Studio 2019 では、Visual Studio の更新に伴い、Xamarin のコンポーネントのバージョンも自動で上がっていきます。よって、Visual Studio の更新を止めれば Xamarin のバージョンも固定されます。
次に、macOS への Xamarin.iOS の配置方法も自動になっております。Visual Studio 2015 では Xamarin公式ページからダウンロードした pkgファイルを手動でmacOSにコピーしてインストールしていましたが、 Visual Studio 2017 以降では 「mac とペアリング」(旧称 Xamarin Mac Agent ) を介して SSH 経由でインストールされます。
ただし、macOS で Xcode のバージョン更新が必要かどうかに関わらず、Xamarin.iOS のバージョンを更新してしまう為、mac とペアリングで接続する際には注意が必要です。

xamarin_ios_xma_01.png

Xamarin.iOSのバージョンが一致しません。
Mac にインストールされている Xamarin.iOS SDK のバージョン '13.10.0.17' は、Visual Studio のこのバージョンと互換性がありません。Xamarin.iOS '13.16.0.13' を自動的にインストールしますか? インストールすると、Mac 上の既存の Xamarin.iOS は上書きされます。


キャンセルを押下すると macOS 上の Xamarin.iOS は更新されません。

xamarin_ios_xma_02.png

'https://aka.ms/xvs/pkg/macios/13.16.0.13' からの Xamarin.iOS のインストールで問題が発生しました。もう一度お試しください。問題が解決しない場合は、Mac に直接インストールしてから、もう一度接続をお試しください。

OKを押下すると、Xamarin.iOSのバージョンを上げずに接続ができます。
※ただし、大きくバージョンが異なる場合は接続ができない場合もあるかもしれません。

もしも間違えて Xamarin.iOS の新しいバージョンを macOS にインストールしてしまった場合は次の手順にお進みください。



2.配置場所

では実際に Xamarin.iOSが配置されている場所について説明します。

【Windowsの配置場所】
(1)レジストリにバージョンの記載があります。
 \HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
 C:\users\ユーザー名\appdata\local\temp\xamarin\xma\broker.local\16.5.000.533\broker.exe.ApplicationCompany
 C:\users\ユーザー名\appdata\local\temp\xamarin\xma\broker.local\16.5.000.533\broker.exe.FriendlyAppName

xamarin_ios_xma_03.png


(2)このことから、以下のディレクトリにも情報が保存されていることが分かります。その情報を元に 「mac とペアリング」時に Xamarin.iOS を更新していると推測しています。しかしながらこのファイル群は削除しても再作成されます。
%UserProfile%\appdata\local\temp\xamarin\

(3)以下のファイルにも Xamrin.iOS のバージョンが書かれていますが、書き換えても Visual Studio 側の Xamarin.iOS バージョンが変わることはありませんでした。
C:\Program Files(x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\iOS\Version

【macOS の配置場所】
(4)Visual Studio からSSH経由でコピーされたpkgファイルが以下のフォルダに配置されています。このpkgファイルを macOS 上でインストールすることで、ダウングレードの上書きが可能です。
/user/ユーザー名/Library/Caches/VisualStudio/8.0/TempDownload/

(5)以下のディレクトリのファイルの情報を見て、バージョンを確認できます。
/Developer/MonoTouch/Version
/library/Frameworks/Xamarin.iOS.framework/Versions/


xamarin_ios_xma_04.png


(6)以下のファイルのような複数の不要なファイルを削除します。
/private/tmp/com.xamarin.yyyy-MM-dd



以上でVisual Studio 2019 において Xamarin.iOS の更新をしないまま接続・ビルドすることができました。
Xamarin Mac Agent の時も Xamarin.iOS バージョンが大きく異なると接続ができなかったり、動作が不安定になり接続が切れるなどの症状がありました。同様に 「mac とペアリング」においても大きく異なるバージョンの接続はできないものと考えていますのでバージョン違いには注意が必要です。



Xamarin.Forms の開発環境を Visual Studio 2019 へ移行する方法 その7へ






最後までお読みいただきありがとうございます。
当ブログの内容をまとめた Xamarin逆引きメニュー は以下のURLからご覧になれます。
https://itblogdsi.blog.fc2.com/blog-entry-81.html



関連記事

コメント

コメントの投稿

※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。

 入力されていないコメントには返信しませんのであらかじめご了承くださいませ。

※ニックネームでも良いので必ずご入力ください。

    

※必ずご入力ください。

    
    

※必ずご入力ください。

※技術的な質問には環境やエラーについて正確かつ詳細にお教えください。

・正確なエラーの内容

・Windowsのバージョン番号

・Visual Studioのバージョン

・機器の型番

・アプリやソフトのバージョン

    

カテゴリ別記事一覧

広告

プロフィール

石河 純


著者名 :石河 純
自己紹介:素人上がりのIT技術者。趣味は卓球・車・ボウリング

IT関連の知識はざっくりとこんな感じです。
【OS関連】
WindowsServer: 2012/2008R2/2003/2000/NT4
Windows: 10/8/7/XP/2000/me/NT4/98
Linux: CentOS RedHatLinux9
Mac: macOS Sierra 10.12 / OSX Lion 10.7.5 / OSX Snow Leopard 10.6.8
【言語・データベース】
VB.net ASP.NET C#.net Java VBA
Xamarin.Forms
Oracle10g SQLServer2008R2 SQLAnywhere8/11/16
ActiveReport CrystalReport ReportNet(IBM)
【ネットワーク関連】
CCNP シスコ技術者認定
Cisco Catalyst シリーズ
Yamaha RTXシリーズ
FireWall関連
【WEB関連】
SEO SEM CSS IIS6/7 apache2

休みの日は卓球をやっています。
現在、卓球用品通販ショップは休業中です。