rksoftware

Visual Studio とか C# とかが好きです

Uno Platform が VSCode でデバッグできるらしいので試してみた その3

つづき

前回まででひとまずプロジェクト (ソリューション) が生まれたので実行して行きたいと思います。まずは、今回の元記事の本体である、Visual Studio Code での Wasm。Windows で行ってみます。

■ ソリューションを VSCode で開く (Windows)

  1. コマンドプロンプトなどで .sln ファイルの有るディレクトリへ移動します。
  2. 次のコマンドを実行します。これで現在のディレクトリが Visual Studio Code で開かれます。
code .
  1. おもむろにデバッグ実行します。
  2. 待ちます。
  3. デバッグコンソールにワーニングが流れます。エラーで止まったかと勘違いしがちな表示ですが、ワーニングなので待ちます。待ちます。
  4. 待ちます。
  5. 待ちます。待ちます。
  6. Now listening on: http://localhost:5000 などと表示されたら完成です。
  7. http://localhost:5000 をブラウザで開きます。

おめでとうございます!
ブラウザに「Hello、 World!」と表示されたら成功です。

素晴らしいですね。

ちなみに VSCode で動かせるのは Wasm だけです。

■ ソリューションを VSCode で開く (Mac)

Mac も Windows と同じ手順です。ソリューションを VSCode で開いておもむろにデバッグ実行!

そして次の表示!

ビルドに失敗しました。ビルド エラーを修正して、もう一度実行してください。

実行できませんでした...

■ ソリューションを Visual Studio で開く (Windows)

ソリューションなので、Visual Studio で開けます。プロジェクトとしてもいろいろ生まれていますし、Visual Studio で開いて動いたら嬉しいですよね?

次のプロジェクトは普通にデバッグ実行できました。

  • Android
  • UWP
  • Wasm

次のプロジェクトは (Windows 環境なので当然) 動きませんでした。Mac にリモート接続して、というのは可能かもしれませんが今回は試していません。

ちなみに皆が気になる macOS プロジェクトはデバッグ実行ボタンは押せるのですが、

System.IO.FileNotFoundException: 'ファイルまたはアセンブリ 'Xamarin.Mac, Version=0.0.0.0, Culture=neutral, PublicKeyToken=XXXXXXXXXXXXXXXX'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。'

という無情なエラーとともに失敗します。悲しいですね

■ ソリューションを Visual Studio for Mac で開く (Mac)

  • Android 実行ターゲット (エミュレータや実機など) の選択肢が一切出てこず実行不可

  • iOS 選択できない。選択肢から iOS プロジェクトを選んでも、選択が変わらず実行不可

  • macOS

アプリケーションがビルドされていません。

とメッセージダイアログで表示されて失敗し実行不可。悲しいですね。

  • Wasm 2件のビルドエラーが表示されて実行不可

悲しいですね。

少しだけ対策

実は

dotnet new unoapp -o MyApp --vscodeWasm

で生まれたソリューションファイル (.sln) はプロジェクトの GUID 大きくが正しくない状態でした。ならば

  1. Visual Studio でソリューションを開く
  2. プロジェクトをすべて削除
  3. 既存のプロジェクトの追加でソリューションに追加しなおす
  4. 各プロジェクトから共有プロジェクトへの参照を設定しなおす

が対策になりそうです。というわけでやってみます。 (※ Mac ではプロジェクトを全て追加することができませんでした。最後の一個を追加すると別のプロジェクトが (.sln から) 居なくなります。なぜ...)

やってみる

やってみると、macOS プロジェクトで参照の追加に共有プロジェクトが出てきませんでした。なぜ... (※ Visual Studip for Mac で追加できました)

実行

次のプロジェクトは普通にデバッグ実行できました。

  • Android
  • iOS

期待の macOS は

System.IO.FileNotFoundException: Could not load the file 'Uno.Wasm.WebSockets'.

というエラーで失敗します。悲しいですね。

UWP は当然働きません。実行の対象プロジェクトとしも選べません。

そして Wasm はビルドエラー。2 件のエラーで動きません。悲しいですね。

■ まとめ

Windows はいい感じ。Mac はあまり動きませんでした。
※ Uno Platform は一日に 3 回とかのペースで更新されています。現在は状況が異なるかもしれません。

まとめよみのための目次