VS2022中引用.NET6 WinForm项目到单元测试项目出现引用错误
解决.NET 6 WinForm项目无法被单元测试项目引用的问题
问题原因
你的WinForm项目目标框架是net6.0-windows(Windows专属的.NET 6框架,包含WinForms等桌面专属API),而xUnit/MSTest测试项目默认目标是通用跨平台的net6.0(.NETCoreApp),跨平台框架项目无法直接引用Windows专属框架的项目,导致编译报错。
解决方案
方案1:修改单元测试项目的目标框架为Windows专属
- 右键单元测试项目 → 选择「属性」
- 在「应用」选项卡的「目标框架」下拉列表中,选择
.NET 6.0 (Windows) - 保存设置后重新编译解决方案
方案2:拆分业务逻辑到通用类库(推荐)
如果项目中有独立于UI的业务逻辑,建议遵循关注点分离原则重构:
- 创建新的「类库(.NET)」项目,目标框架选择
net6.0 - 将AppUpdate项目中的非UI业务代码迁移到这个类库中
- 让WinForm项目和单元测试项目同时引用该类库
- 单元测试项目直接测试类库中的业务逻辑,避免引用Windows专属项目的限制
额外说明
你尝试的「Unit Test Project (.NET Framework)」是针对传统.NET Framework的测试模板,和.NET 6项目不兼容,因此无法解决问题,无需使用该模板。
内容的提问来源于stack exchange,提问作者Rafael Alfredo Zelaya Amaya
相关产品推荐
相关产品推荐

