我在 .NET MAUI 和 WPF 中遇到此问题。我只想建立一个针对 MAUI 或 WPF 项目的单元测试项目(顺便说一句,这些项目位于单独的解决方案中)。问题是 MSTest 项目以 .NET8 为目标,而正在测试的项目以 .NET8-windows 为目标(“windows”是 MAUI 项目和 WPF 项目所需的操作系统目标)。我还尝试添加 xUnit 和 NUnit 测试项目作为解决方法,但这三个项目都产生相同的结果。我已经多次清理解决方案并重新启动 VS 多次。我正在解决此问题的第二天。 我希望我可以从测试项目中定位包含的操作系统平台,但我不知道如何或我尝试过的东西没有起作用。我不明白为什么会这样;我之前添加测试项目时从来没有遇到过这个问题。 这是 WPF 项目 .csproj 文件(因为它比 MAUI 简单;注意 SDK 是因为这是一个 Blazor Hybrid WPF 项目):
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<RootNamespace>SuccessfulSetup</RootNamespace>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
</PropertyGroup>
<!-- <ItemGroup> <None Remove="Components\NazareneStyle.razor.css" /> </ItemGroup> <ItemGroup> <Compile Include="Components\NazareneStyle.razor.css" /> </ItemGroup>-->
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebView.Wpf" Version="8.0.7" />
</ItemGroup>
</Project>
这是 MSTest .csproj 文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SuccessfulSetup\SuccessfulSetup.csproj" />
</ItemGroup>
<ItemGroup>
<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
</ItemGroup>
</Project>
我在 WPF 中也遇到了同样的问题。 WPF 应用程序以 .NET8-windows 为目标,而 MSTest 以 .NET8 为目标,测试无法进行。对我有用的是将
.csproj
中的 MSTest 版本从 .net8.0
更改为 .net8.0-windows
。 TargetFramework 会是这样的:
<TargetFramework>net8.0-windows</TargetFramework>