個人的なメモ

Tomohiro Suzuki @hiro128_777 のブログです。Microsoft MVP for Developer Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

Xamarin から .NET へのアップグレード

公式でも、Xamarin から .NET へのアップグレードが案内されるようになりました。いよいよ Xamarin が終焉が近くなってきました。
 
learn.microsoft.com
 
Xamarin.Forms から MAUI への移行は .NET Upgrade Assistant が利用できます。
learn.microsoft.com
 
Xamarin.Android、Xamarin.iOS、Xamarin.Mac といった Xamarin プロジェクトは現状、「手動」でのアップグレードになってしまいます。
learn.microsoft.com
 
 

.NET MAUI の主なプロジェクトテンプレート(Xamarin との比較)

Xamarin でサポートされていたプロジェクトは .NET MAUI でサポートされているのでしょうか。
というわけで.NET MAUI の主なプロジェクトテンプレートを Xamarin と比較してみました。
 
下記の表の「短い名前」は、 .NET CLI で

dotnet new maui

のように「短い名前」をテンプレート名として使うことでプロジェクトを作成できます。
 
learn.microsoft.com
  

Xamarin .NET
テンプレート名 テンプレート名 短い名前
(dotnet new <TEMPLATE>)
iOSアプリ iOSアプリ(Xamarin) iOS アプリケーション(プレビュー) ios
MacCatalyst アプリケーション(プレビュー) maccatalyst
watchOSアプリ watchOSアプリ(Xamarin) .NET 6 未サポート。.NET 7 での追加サポート予定もなし
https://twitter.com/davidortinau/status/1519303524726849536
Androidアプリ Androidアプリ(Xamarin) Android Application android
Android Wear アプリ Android Wear アプリ(Xamarin) Android Wear Application androidwear
クロスプラットフォームモバイルアプリ モバイルアプリ(Xamarin.Forms) .NET MAUI アプリ maui
macOSアプリ cocoaアプリ(Xamarin) macOS アプリケーション(プレビュー) macOS
MacCatalyst アプリケーション(プレビュー) maccatalyst
 
.NET では watchOS アプリは未サポートです。今のところ .NET 7 での追加サポート予定もありません。
(たいして使われていない割に、サポートするには手間がかかるため、予定がないとのことです。)
 
以下、.NET MAUI のプロダクトマネージャーのツイートです。
 

Apple M1 Mac 上の Visual Studio for Mac で Xamarinはどれくらい使えるか調べました。(2020/12/13時点)

はじめに


こんにちは、@hiro128_777です。
 
この記事は「Xamarin Advent Calendar 2020」の13日目になります。
 
Apple M1 Mac が発売されて1ヶ月になりますね。というわけで、macOS Big Sur (Apple M1) 上の、Visual Studio for Mac で Xamarin がどれくらい使えるか再度確認してみました。
 
ちなみに、11/23 時点での状況こちらとなっております。
hiro128.hatenablog.jp


バージョン

  • macOS Big Sur 11.0.1
  • Visual Studio for Mac Version 8.8.3 (build 16)
  • Xcode 12.2

 
Xcode は Universal App です。
f:id:hiro128:20201123213941p:plain

Visual Studio はまだ Intel App で Rosetta2 を介しての動作となります。
f:id:hiro128:20201213140416p:plain
 

Visual Studio for Mac のインストールと起動

 
インストールと起動は全く問題ありません。当該の Mac 上で、 なお、Rosetta 2 を利用するアプリの起動が初めての場合は、Rosetta 2 のインストールが走ります。
 

アプリごとの動作のまとめ

 

SDK 認識・コード編集 エミュレーター
デバッグ実行
実機
デバッグ実行
Xamarin Profiler
エミュレーター
Xamarin Profiler
実機
備考
iOS ○ OK ○ OK ○ OK ○ OK ○ OK  
Android ○ OK △ 一応動作 ○ OK ○ OK ○ OK エミュレーターはプレビュー版で動作
macOS ○ OK --------------- ○ OK --------------- ○ OK Intel App としてビルドされ、
Universal App としてビルドできない

 
結論から言うと、発売直後の状況より改善があります。
以下詳細となります。
  

iOS アプリ

 

SDK 認識・コード編集

問題ありません。
 

ビルド・デバッグ実行(シミュレータ)

問題ありません。
 

ビルド・デバッグ実行(実機)

問題ありません。
 
11/23 時点では iOS で実機にデプロイ時にプロビジョニングプロファイルの設定が不完全な時、1度だけ Visual Studio for Mac がクラッシュする現象が発生しましたが、それが起こらなくなりました。ですが、たまたま起こらなかったのか改善されたのかは不明です。
 

Xamarin Profiler(シミュレータ)

問題ありません。
 

Xamarin Profiler(実機)

問題ありません。
 

Android アプリ

 

SDK 認識・コード編集

問題ありません。
 

ビルド・デバッグ実行(エミュレータ)

11/23 時点では、エミュレータが起動できず実行できませんでしたが、プレビューですが、Google からApple M1 で動作するエミュレーターがリリースされており、そちらででエミュレーター上のデバッグが可能となりました。

エミュレータは以下からダウンロードしてインストールできます。
github.com

 
起動すると、Visual Studio for Mac で認識します。
f:id:hiro128:20201213141145p:plain
f:id:hiro128:20201213141455p:plain

 
なお、プロジェクトオプションで「迅速なアセンブリの配置」を外さないと、デプロイでエラーが出ました。
f:id:hiro128:20201213140940p:plain
 
プレビュー版で試したら発生しませんでしたので、以下の issue のようです。
github.com

 

ビルド・デバッグ実行(実機)

問題ありません。
 

Xamarin Profiler(シミュレータ)

問題ありません。
 

Xamarin Profiler(実機)

問題ありません。
 

mac アプリ

 

SDK 認識・コード編集

問題ありません。
 

ビルド・デバッグ実行(実機)

 
こちらは状況が変わらず、ビルド、デバッグ実行できますが、Universal App としてビルドさせる設定が見つからず、結果として、Intel App としてビルドされ、Universal App としてはビルドできません。
f:id:hiro128:20201123215611p:plain
 

Xamarin Profiler(実機)

問題ありません。
 

まとめ

というわけで、再度の検証では、Apple M1 Mac 発売直後より状況が改善され、動くには動くという状況にはなりました。少なくとも実機での動作は問題なくなっていますので、実機デバッグのみで開発するのであれば問題ない感じです。エミュレーターも使う場合には、もう少し待てば、Android でも問題なく使えるようになりそうです。
 
なお、速度的には全く遅いとは感じませんでした。あとは、Visual Studio for Mac が M1 ネイティブで動くようになると嬉しいのですが、情報が全く無くどこまで開発が進んでいるのかもわかりません。Xamarin 後継の .NET MAUI は Visual Studio Code をサポートするとアナウンスされていますので、MAUI リリースまで Rosetta 2 で引っ張って、Visual Studio for Mac は廃止で Visual Studio Code に移行というような事態にならないかがとても心配です。
 
早く Visual Studio for Mac を M1 ネイティブ対応にしていただけると助かります。
 
今回は以上です。

macOS Big Sur (Apple M1) 上で、Visual Studio for Mac を軽く試してみました。(2020/11/23速報版)

はじめに

こんにちは、@hiro128_777です。
 
ようやく、Apple M1 Mac が自宅に届きました。というわけで、早速 Apple M1 Mac で Visual Studio for Mac を一通り軽く試してみました。なお、まだ詳しい検証はできておりませんので、引き続き調査したいと思います。
 
Intel Mac の Big Sur 上の動作状況は以下をご覧ください。
hiro128.hatenablog.jp
 

バージョン

  • macOS Big Sur 11.0.1
  • Visual Studio for Mac Version 8.8.1 (build 37)
  • Xcode 12.2

 
Xcode は Universal App です。
f:id:hiro128:20201123213941p:plain
 

Visual Studio は Intel App で Rosetta2 を介しての動作となります。
f:id:hiro128:20201123214003p:plain 
 


Visual Studio for Mac のインストールと起動

 
インストールと起動は全く問題ありません。当該の Mac 上で、 なお、Rosetta 2 を利用するアプリの起動が初めての場合は、Rosetta 2 のインストールが走ります。
f:id:hiro128:20201123214132p:plain
 


なお、Visual Studio for Mac Version 8.8 のリリースノートは以下をご参照ください。
docs.microsoft.com
 


アプリごとの動作のまとめ

 

SDK 認識・コード編集 エミュレータ
デバッグ実行
実機
デバッグ実行
備考
ASP.NET(.NET 5) ○ OK --------------- × NG Safari (Universal) 、 Chrome (Universal) ともに同じエラー
iOS ○ OK ○ OK ○ OK(若干不安定) 実機でプロビジョニングプロファイルの設定が不完全な時、
1度 VS がクラッシュ
Android ○ OK × NG × NG エミュレータが起動せず、実機も認識しない
macOS ○ OK --------------- ○ OK Intel App としてビルドされ、Universal App としてビルドできない

 


ASP.NET(.NET 5)


自分の環境では、Intel Mac 同様、ASP.NET で初回のみ開発証明書に関するダイアログが出ましたが、以下のように、画面表示の通り許可すれば、次回以降は聞かれなくなります。
f:id:hiro128:20201113143123p:plain
 
f:id:hiro128:20201113143139p:plain
 
f:id:hiro128:20201113143153p:plain
 
f:id:hiro128:20201113143213p:plain
 

上記は、微妙に発生条件が違いますが、以下の issue が相当しそうです。
docs.microsoft.com
 


ただし、対処後もデバッグ実行に失敗します。
 
f:id:hiro128:20201123214109p:plain


下記のようなエラーメッセージが出ます。

-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.0/System.Private.CoreLib.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Stack overflow.
   at System.Collections.HashHelpers.GetPrime(Int32)
   at System.Collections.Generic.Dictionary`2[[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].Initialize(Int32)
   at System.Collections.Generic.Dictionary`2[[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]..ctor(Int32, System.Collections.Generic.IEqualityComparer`1<System.__Canon>)
   at System.AppContext.Setup(Char**, Char**, Int32)

 



iOS アプリ

 

SDK 認識・コード編集

問題ありません。
 

ビルド・デバッグ実行(シミュレータ)

問題ありません。
 

ビルド・デバッグ実行(実機)

問題ありません。
 
プロビジョニングプロファイルの設定が不完全な時、1度だけ Visual Studio がクラッシュしました。その後は、プロビジョニングプロファイルの設定が不完全であることを示すエラーが表示されました。
  


Android アプリ

 

SDK 認識・コード編集

問題ありません。
 

ビルド・デバッグ実行(エミュレータ)

エミュレータが起動できず、実行できません。 


ビルド・デバッグ実行(実機)

実機を認識しませんでした。ただし、Intel Mac では、実機をきちんと認識しますので、Visual Studio for Mac 起因の問題ではない可能性もあります。
 


mac アプリ

 

SDK 認識・コード編集

問題ありません。
 

ビルド・デバッグ実行(実機)

 
ビルド、デバッグ実行できますが、Universal App としてビルドさせる設定が見つからず、結果として、Intel App としてビルドされ、Universal App としてはビルドできません。
f:id:hiro128:20201123215611p:plain

まとめ

というわけで、軽く触った感じでは、Apple M1 Mac ではまだ問題が結構ありそうです。エラーの原因も詳しく調べられていないので、もう少し色々試してみたいと思います。
なお、速度的には特に遅いとは感じませんでした。Visual Studio for Mac が M1 ネイティブで動くようになるのが楽しみです。

また、M1 Mac 発売から1ヶ月後の 2020/12/13 時点での、調査結果は以下をご覧ください。
hiro128.hatenablog.jp

 
今回は以上です。

macOS Big Sur (Intel) 上で、Visual Studio for Mac を軽く試してみました。

はじめに

こんにちは、@hiro128_777です。

待ちに待った macOS Big Sur がリリースされました。というわけで、早速アップデートし Intel Mac 上で Visual Studio for Mac を一通り軽く試してみました。

f:id:hiro128:20201113133120p:plain
 


なお、Apple M1 チップ Mac 上の検証結果は以下をご覧ください。
hiro128.hatenablog.jp



バージョン

  • macOS Big Sur 11.0.1
  • Visual Studio for Mac Version 8.8 (build 2913)
  • Xcode 12.2

 


Visual Studio for Mac 起動

問題ありません。
f:id:hiro128:20201113133151p:plain
 
なお、Visual Studio for Mac Version 8.8 のリリースノートは以下をご参照ください。
docs.microsoft.com


iOS アプリ

SDK 認識・コード編集

問題ありません。
f:id:hiro128:20201113131721p:plain
 

ビルド・デバッグ実行(シミュレータ)

問題ありません。
f:id:hiro128:20201113140048p:plain
 


Android アプリ

SDK 認識・コード編集

問題ありません。
f:id:hiro128:20201113142030p:plain
 

ビルド・デバッグ実行(シミュレータ)

問題ありません。
f:id:hiro128:20201113140029p:plain
 


.NET 5 ASP.NET アプリ

SDK 認識・コード編集

問題ありません。
f:id:hiro128:20201113142058p:plain
 

ビルド・デバッグ実行

自分の環境では、ASP.NET デバッグ実行時、開発証明書に関するダイアログが出ましたが、以下のように、画面表示の通り許可すれば、問題ありませんでした。

f:id:hiro128:20201113143123p:plain
 
f:id:hiro128:20201113143139p:plain
 
f:id:hiro128:20201113143153p:plain
 
f:id:hiro128:20201113143213p:plain
 

上記は、微妙に発生条件が違いますが、以下の issue が相当しそうです。
docs.microsoft.com
 

なお、対処後は無事デバッグ実行もできました。
f:id:hiro128:20201113133803p:plain
 


まとめ

というわけで、軽く触った感じでは、Intel Mac では問題なさそうです。
 
Apple M1 Mac での挙動は、実機が届き次第確認してみます。
 
今回は以上です。