0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「.NET CLI を使用して Mac Catalyst アプリを構築する」をやってみたら・・・

Posted at

背景と目的

「.NET CLI を使用して Mac Catalyst アプリを構築する」をやってみたら・・・すんなりできないじゃん。以前プレビュー版を入れていたからだと思いますが、エラーと対処方法を残しておきます。

前提条件

コマンドの実施環境は、Mac + .NET CLI です。

bash
$ sw_vers
ProductName:    macOS
ProductVersion: 12.4
BuildVersion:   21F79

$ dotnet --version
6.0.300

.NET CLI を使用して Mac Catalyst アプリを構築する

こちらのドキュメントの通り進めてみます。

bash
# .NET MAUI の最新のパブリック ビルドをインストールします
sudo dotnet workload install maui --source https://api.nuget.org/v3/index.json

# .NET CLI を使用して新しい .NET MAUI アプリを作成します
dotnet new maui -n "MyMauiApp"

以下のようなメッセージが表示され MyMauiApp ディレクトリが作成されます。

bash
テンプレート ".NET MAUI App (Preview)" が正常に作成されました。

テンプレートパッケージ 'Microsoft.Maui.Templates::6.0.101-preview.10.2068' の更新プログラムを使用できます。
パッケージを更新するには、以下を使います:
   dotnet new --install Microsoft.Maui.Templates::6.0.312

'Optional workloads' プロバイダーで利用可能なテンプレート パッケージ 'Microsoft.Maui.Templates::6.0.312' の更新プログラムを使用できます。
組み込みのテンプレート パッケージを使用するには、インストールされたテンプレート パッケージを、次を使用して手動でアンインストールします:
   dotnet new --uninstall Microsoft.Maui.Templates

ディレクトリを MyMauiApp に変更しアプリをビルドして実行します。

bash
# ディレクトリを MyMauiApp に変更しします
cd MyMauiApp

# アプリをビルドして実行します
dotnet build -t:Run -f net6.0-maccatalyst

以下のようなエラーメッセージが表示されます。

bash
.NET 向け Microsoft (R) Build Engine バージョン 17.2.0+41abc5629
Copyright (C) Microsoft Corporation.All rights reserved.

  復元対象のプロジェクトを決定しています...
  /Users/testuser/Work/MyMauiApp/MyMauiApp.csproj を復元しました (482 ms)。
  Detected signing identity:
          
    Bundle Id: com.companyname.MyMauiApp
    App Id: com.companyname.MyMauiApp
/Users/testuser/Work/MyMauiApp/MainPage.xaml.cs(3,22): error CS0234: 型または名前空間の名前 'Essentials' が名前空間 'Microsoft.Maui' に存在しません (アセンブリ参照があることを確認してください) [/Users/testuser/Work/MyMauiApp/MyMauiApp.csproj]

ビルドに失敗しました。

/Users/testuser/Work/MyMauiApp/MainPage.xaml.cs(3,22): error CS0234: 型または名前空間の名前 'Essentials' が名前空間 'Microsoft.Maui' に存在しません (アセンブリ参照があることを確認してください) [/Users/testuser/Work/MyMauiApp/MyMauiApp.csproj]
    0 個の警告
    1 エラー

経過時間 00:00:11.82

MainPage.xaml.cs を修正する対処方法

MainPage.xaml.cs の using Microsoft.Maui.Essentials; が存在しないようなので、一旦コメントアウトしてエラーメッセージの変化を確認してみます。

bash
# using Microsoft.Maui.Essentials; をコメントアウトします
gsed -i 's?using Microsoft.Maui.Essentials;?// using Microsoft.Maui.Essentials;?' MainPage.xaml.cs 

# アプリをビルドして実行します
dotnet build -t:Run -f net6.0-maccatalyst

以下のようなエラーメッセージが表示されます。

bash
.NET 向け Microsoft (R) Build Engine バージョン 17.2.0+41abc5629
Copyright (C) Microsoft Corporation.All rights reserved.

  復元対象のプロジェクトを決定しています...
  復元対象のすべてのプロジェクトは最新です。
  Detected signing identity:
          
    Bundle Id: com.companyname.MyMauiApp
    App Id: com.companyname.MyMauiApp
/Users/testuser/Work/MyMauiApp/MainPage.xaml.cs(21,4): error CS0103: 現在のコンテキストに 'SemanticScreenReader' という名前は存在しません [/Users/testuser/Work/MyMauiApp/MyMauiApp.csproj]

ビルドに失敗しました。

/Users/testuser/Work/MyMauiApp/MainPage.xaml.cs(21,4): error CS0103: 現在のコンテキストに 'SemanticScreenReader' という名前は存在しません [/Users/testuser/Work/MyMauiApp/MyMauiApp.csproj]
    0 個の警告
    1 エラー

経過時間 00:00:00.81

つまり SemanticScreenReader を使うために Microsoft.Maui.Essentials があるようです。

こちらのドキュメントによると Microsoft.Maui.Essentials の SemanticScreenReader は Microsoft.Maui.Accessibility に名前空間を変更されたことがわかります。

bash
# コメントアウトを外して Essentials を Accessibility に変更します
gsed -i 's?// using Microsoft.Maui.Essentials;?using Microsoft.Maui.Accessibility;?' MainPage.xaml.cs 

# アプリをビルドして実行します
dotnet build -t:Run -f net6.0-maccatalyst

無事ビルドが通りアプリが実行できました。

maui-cli-01.png

MAUI テンプレートを更新する対処方法

上の方で dotnet new maui -n "MyMauiApp" した時のメッセージにあるように MAUI テンプレートを更新します。

bash
# MAUI テンプレートを更新します
dotnet new --install Microsoft.Maui.Templates::6.0.312 --force

以下のようなメッセージが表示されます。

bash
次のパッケージがインストールされます:
   Microsoft.Maui.Templates::6.0.312

テンプレート パッケージをインストールすると、使用可能なテンプレート パッケージがオーバーライドされます。
次のテンプレート パッケージは既に使用可能です。
   Microsoft.Maui.Templates::6.0.312

Microsoft.Maui.Templates は既にインストールされています。バージョン: 6.0.101-preview.10.2068、バージョン 6.0.312 に置き換えられます。
Microsoft.Maui.Templates::6.0.101-preview.10.2068 が正常にアンインストールされました。
成功: Microsoft.Maui.Templates::6.0.312により次のテンプレートがインストールされました。
テンプレート名                       短い名前          言語  タグ                                                     
-----------------------------------  ----------------  ----  ---------------------------------------------------------
..NET MAUI ContentPage (C#)          maui-page-csharp  [C#]  MAUI/Android/iOS/macOS/Mac Catalyst/WinUI/Tizen/Xaml/Code
.NET MAUI Blazor アプリ              maui-blazor       [C#]  MAUI/Android/iOS/macOS/Mac Catalyst/Windows/Tizen/Blazor 
.NET MAUI ContentPage (XAML)         maui-page-xaml    [C#]  MAUI/Android/iOS/macOS/Mac Catalyst/WinUI/Tizen/Xaml/Code
.NET MAUI ContentView (XAML)         maui-view-xaml    [C#]  MAUI/Android/iOS/macOS/Mac Catalyst/WinUI/Tizen/Xaml/Code
.NET MAUI ResourceDictionary (XAML)  maui-dict-xaml    [C#]  MAUI/Android/iOS/macOS/Mac Catalyst/WinUI/Xaml/Code      
.NET MAUI アプリ                     maui              [C#]  MAUI/Android/iOS/macOS/Mac Catalyst/Windows/Tizen        
.NET MAUI クラス ライブラリ          mauilib           [C#]  MAUI/Android/iOS/macOS/Mac Catalyst/Windows/Tizen        
.NET MAUI コンテンツ ビュー (C#)     maui-view-csharp  [C#]  MAUI/Android/iOS/macOS/Mac Catalyst/WinUI/Tizen/Xaml/Code
bash
# .NET CLI を使用して新しい .NET MAUI アプリを作成します
dotnet new maui -n "MyMauiApp2"

# ディレクトリを MyMauiApp2 に変更しします
cd MyMauiApp2

# アプリをビルドして実行します
dotnet build -t:Run -f net6.0-maccatalyst

テンプレートが変わるとコードもかなり変わるんですね。

maui-cli-02.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?