WinUI3项目无法被.NETCoreApp v7.0的MSTest项目引用的解决方法
解决WinUI 3项目与MSTest项目框架不兼容的构建错误
问题描述
在WinUI 3项目中通过右键菜单的「Create Unit Tests」选项创建MSTest项目后,构建测试项目时出现以下错误:
Error Project '..\xxx\xxx\xxx.csproj' targets 'net6.0-windows10.0.19041.0'. It cannot be referenced by a project that targets '.NETCoreApp,Version=v7.0'. error NU1201: Project xxx is not compatible with net7.0 (.NETCoreApp,Version=v7.0). Project xxx supports: net6.0-windows10.0.19041 (.NETCoreApp,Version=v6.0)
错误核心原因:被测试的WinUI 3项目目标框架为net6.0-windows10.0.19041.0,而MSTest项目目标框架是net7.0,两者框架版本不兼容,导致无法跨版本引用。
解决方案
方案一:修改MSTest项目的目标框架,与WinUI 3项目保持一致
这是最直接的解决方式,让测试项目的框架版本完全匹配被测试项目:
- 打开MSTest项目的
testproject.csproj文件 - 将
<PropertyGroup>中的<TargetFramework>节点值替换为WinUI 3项目对应的框架版本:<PropertyGroup> <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <IsPackable>false</IsPackable> <IsTestProject>true</IsTestProject> </PropertyGroup> - 保存文件后重新构建项目即可。
方案二:让WinUI 3项目支持多目标框架(兼容net7.0)
如果需要保留MSTest项目的net7.0框架,可以修改WinUI 3项目使其同时支持net6.0和net7.0的Windows目标框架:
- 打开WinUI 3项目的
xxx.csproj文件 - 将原有的
<TargetFramework>(单数)改为<TargetFrameworks>(复数),添加net7.0-windows对应的版本(建议匹配对应Windows SDK版本):<PropertyGroup> <OutputType>WinExe</OutputType> <TargetFrameworks>net6.0-windows10.0.19041.0;net7.0-windows10.0.22621.0</TargetFrameworks> <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion> <RootNamespace>HP.EasyShell.Primus</RootNamespace> <ApplicationManifest>app.manifest</ApplicationManifest> <Platforms>x86;x64;ARM64</Platforms> <RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64;win11-x86;win11-x64;win11-arm64</RuntimeIdentifiers> <UseWinUI>true</UseWinUI> </PropertyGroup> - 保存文件后,MSTest项目即可正常引用WinUI 3项目并构建。
内容的提问来源于stack exchange,提问作者Ming
相关产品推荐
相关产品推荐

