使用NUnit测试.NET6 WPF应用遇框架不匹配错误,求解决方案
解决WPF项目与NUnit测试项目框架不匹配问题
问题原因
WPF项目目标框架为net6.0-windows10.0.17763.0(Windows特定的.NET 6框架,包含WPF所需的桌面API),而NUnit测试项目默认目标框架为net6.0(通用.NET Core框架),后者无法直接引用前者,导致编译错误。
解决方案
将NUnit测试项目的目标框架修改为与WPF项目一致的Windows特定框架,具体步骤如下:
方法1:通过Visual Studio界面修改
- 右键NUnit测试项目 → 选择「属性」
- 在「应用」标签页的「目标框架」下拉菜单中,选择
net6.0-windows10.0.17763.0(与你的WPF项目版本完全匹配) - 保存设置,重新编译项目
方法2:直接编辑测试项目的.csproj文件
打开测试项目的.csproj文件,将原有的<TargetFramework>节点替换为与WPF项目一致的框架版本,示例修改如下:
原测试项目.csproj片段:
<PropertyGroup> <TargetFramework>net6.0</TargetFramework> <Nullable>enable</Nullable> <IsPackable>false</IsPackable> <IsTestProject>true</IsTestProject> </PropertyGroup>
修改后:
<PropertyGroup> <TargetFramework>net6.0-windows10.0.17763.0</TargetFramework> <Nullable>enable</Nullable> <IsPackable>false</IsPackable> <IsTestProject>true</IsTestProject> <!-- 若需要测试WPF UI组件,添加以下配置;仅测试业务逻辑可忽略 --> <!-- <UseWPF>true</UseWPF> --> </PropertyGroup>
注意事项
不要修改WPF项目的TargetFramework为net6.0,因为WPF是Windows桌面专属框架,依赖net6.0-windows提供的系统API,修改后会丢失WPF运行所需的依赖,引发新的编译错误。
内容的提问来源于stack exchange,提问作者Spydee
相关产品推荐
相关产品推荐

