1
2

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 MAUIプロジェクトとxUnitテストプロジェクト間の参照問題を解決する

Last updated at Posted at 2023-04-20

.NET MAUIプロジェクトとxUnitテストプロジェクト間で参照が正しく解決されない場合があります。この記事では、その問題を解決する方法を解説します。

問題の概要

  • .NET MAUIプロジェクトとxUnitテストプロジェクト間で参照が正しく解決されない。
  • ソリューションエクスプローラーに黄色い!マークが表示される。
  • usingディレクティブがグレーアウトし、クイックアクションメニューに「usingディレクティブは必要ありません」と表示される。

解決策

.NET MAUIプロジェクトのターゲットフレームワークにnet6.0を追加することで、両方のプロジェクトで同じフレームワークを使用し、参照が正しく解決されるようになります。

手順

  1. Visual Studioで、対象の.NET MAUIプロジェクト(例:MauiTestSample)の*.csprojファイルを開きます。
    • ソリューションエクスプローラーで、対象のプロジェクトを右クリックし、「プロジェクト ファイルの編集」を選択します。
  2. <TargetFrameworks>要素を見つけ、以下の行を追加します。
<TargetFrameworks>$(TargetFrameworks);net6.0</TargetFrameworks>

これにより、ターゲットフレームワークにnet6.0が追加されます。変更後の*.csprojファイルは以下のようになります。

   <Project Sdk="Microsoft.NET.Sdk">
       <!-- 省略 -->
       <PropertyGroup>
           <TargetFrameworks>net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks>
           <TargetFrameworks>$(TargetFrameworks);net6.0</TargetFrameworks>
           <!-- 省略 -->
       </PropertyGroup>
       <!-- 省略 -->
   </Project>

ファイルを保存し、Visual Studioでプロジェクトをリロードします。
ソリューションエクスプローラーでプロジェクトを右クリックし、「プロジェクトのリロード」を選択します。
ソリューションをクリーンし、再ビルドします。
これにより、参照が正しく解決され、黄色い!マークが消えるはずです。ただし、注意すべき点として、これによりマルチターゲットプロジェクトが.NET 6.0としてもビルドされるため、プラットフォーム固有のコードの条件付きコンパイルに注意する必要があります。これは、.NET 6.0ターゲットがプラットフォーム固有のAPIにアクセスできないため、実行時に問題が発生する可能性があります。

まとめ

.NET MAUIプロジェクトとxUnitテストプロジェクト間の参照問題は、ターゲットフレームワークにnet6.0を追加することで解決できます。ただし、プラットフォーム固有のコードの条件付きコンパイルに注意し、.NET 6.0ターゲットで実行時に問題が発生しないように適切な対応を行ってください。

参考文献

[1] 増田智明. .NET MAUIによるマルチプラットフォームアプリ開発: iOS、Android、Windows、macOS対応アプリをC#で開発. Kindle版, 2023. Amazon.co.jp

1
2
1

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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?