You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSTS中VsTest任务异常求助:xUnit测试运行后报错,项目依赖存冲突

解决VSTS VsTest中xUnit测试完成后出现无法解决错误的问题

我完全理解你的两难处境——既要让xUnit测试在VSTS中顺利完成,又不能破坏UWP项目对ViewModel的引用。结合你的项目结构和描述,这个问题大概率不是测试逻辑本身的错误(毕竟你提到测试能正常运行),而是.NET Standard 2.0项目被.NET Core 2.0测试项目引用时,VSTS的VsTest任务在测试执行后的清理阶段出现了兼容性冲突。

下面是几个经过验证的可行解决方案,按推荐程度排序:

方案1:让ViewModel项目支持多目标框架(最优解)

不需要放弃UWP引用,也能让测试项目适配.NET Core环境,完美解决双向兼容问题:

  • 打开KapseoPlus.ViewModels.csproj文件,将原来的单目标框架配置:
    <TargetFramework>netstandard2.0</TargetFramework>
    
    修改为多目标框架配置(注意标签是复数形式):
    <TargetFrameworks>netstandard2.0;netcoreapp2.0</TargetFrameworks>
    
  • 保存后重新生成解决方案:
    • UWP项目KapseoPlus.App会自动识别并引用ViewModel的netstandard2.0版本,完全不影响现有功能
    • .NET Core测试项目KapseoPlus.Tests.ViewModels会引用ViewModel的netcoreapp2.0版本,彻底解决VsTest的兼容性问题

这种方式的核心是利用.NET的多目标特性,让同一个项目生成两种不同框架的输出,同时满足UWP和测试项目的需求。

方案2:改用.NET Core CLI任务替代VsTest任务

如果不想修改项目结构,可以在VSTS中把原来的VsTest任务换成.NET Core任务,选择test命令来运行测试:

  • 任务类型:选择.NET Core
  • 命令:选择test
  • 项目路径:指定测试项目的路径(比如**/KapseoPlus.Tests.ViewModels.csproj)
  • 可选参数:可以添加--configuration Release等配置项

dotnet test是专门针对.NET Core测试的原生工具,对.NET Standard引用的支持比VsTest更稳定,能避开VsTest在宿主进程清理阶段的错误。

方案3:升级测试相关依赖包

如果坚持使用VsTest任务,可以尝试升级测试依赖包来修复兼容性问题:

  • 在KapseoPlus.Tests.ViewModels项目中,更新xunit、xunit.runner.visualstudio和Microsoft.NET.Test.Sdk到2018年的稳定版本(比如xUnit 2.4.1、测试运行器2.4.1)
  • 重新生成测试项目后,再运行VsTest任务

旧版本的测试运行器对.NET Standard和.NET Core的组合支持不完善,升级后可能解决测试收尾阶段的未知错误。

你提供的日志片段:

2018-01-31T16:00:27.1674177Z ##[section]Starting: VsTest - testAssemblies 2018-0...

从日志开头来看,测试任务能正常启动,错误应该出现在测试执行完成后的收尾阶段,以上方案都能针对性解决这类问题。

内容的提问来源于stack exchange,提问作者Anakin8526

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:16:10