xUnit テストプロジェクトに Windows Formプロジェクトの参照を追加すると 「プロジェクト '*.csproj' は 'net5.0-windows' を対象にしています。'.NETCoreApp,Version=v5.0' を対象とするプロジェクトからは参照できません。」 エラーが発生する現象と対処法について紹介します。
xUnitテストプロジェクトに .NET 5.0 のWindows Formプロジェクトの参照を追加すると、以下のエラーが発生します。
英語でのエラーメッセージは下記です。
net5.0-windows
が設定されています。
一方、xUnitテストプロジェクトはプラットフォームに依存しない net5.0
の設定となっているため、プラットフォームに依存しないアプリケーションから
プラットフォームに制約のあるアプリケーションを参照しようとしてエラーが発生します。
net5.0-windows
に変更します。プロジェクトファイルを開いて、ターゲットフレームワークの設定を確認します。
[ソリューション エクスプローラー]のウィンドウのツリービューでWindows Formアプリケーションのプロジェクトのノードを選択して右クリックします。
ポップアップメニューが表示されます。メニューの[プロジェクト ファイルの編集]の項目をクリックします。
エディタ画面にプロジェクトファイルのXMLが表示されます。
コードは下記です。(プロジェクトの設定等で若干異なる場合があります。)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
</Project>
続いてテストプロジェクトのプロジェクト設定を確認します。[ソリューション エクスプローラー]のツリービューで
テストプロジェクトのノードをクリックして選択し、右クリックします。ポップアップメニューが表示されますので、
[プロジェクト ファイルの編集]の項目をクリックします。
プロジェクトファイルのコードがエディタ画面に表示されます。
コードは下記です。(プロジェクトの設定等で若干異なる場合があります。)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.0.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\xUnitTestSimple\xUnitTestSimple.csproj" />
</ItemGroup>
</Project>
TargetFramework
タグの値を "net5.0" から "net5.0-windows" に変更します。 <PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net5.0-windows</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
プロジェクトファイル変更後、プロジェクトをビルドしてエラーが解消されたことを確認します。
xUnitテストプロジェクトから、.NET 5.0 のWindows フォームアプリケーションを参照できました。