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

.NET 8中运行Xunit测试遇程序集加载错误

解决.NET 8迁移中Xunit测试无法加载xunit.execution.dotnet.dll的问题

关于错误路径的说明

错误信息里的C:\Dev\xunit\xunit\src\...路径不是问题根源:这个路径是Xunit项目自身的源码编译路径,报错时显示的是Xunit组件的调试栈信息,和你的本地文件系统完全无关,不需要在你的C盘创建该目录。

问题本质

核心问题是Xunit测试运行器在.NET 8环境下无法找到运行时依赖的xunit.execution.dotnet.dll,通常是迁移过程中测试项目的格式、包引用或构建配置与.NET 8不兼容导致的。

具体解决步骤

  • 将测试项目转换为SDK-style格式
    旧的.NET Framework测试项目(非SDK-style)和.NET 8的SDK-style项目结构不兼容。右键测试项目→编辑项目文件,确保开头是:

    <Project Sdk="Microsoft.NET.Sdk">
    

    同时确认项目的目标框架设置为.NET 8:

    <PropertyGroup>
      <TargetFramework>net8.0</TargetFramework>
      <ImplicitUsings>enable</ImplicitUsings>
      <Nullable>enable</Nullable>
      <IsPackable>false</IsPackable>
    </PropertyGroup>
    
  • 统一并重新安装Xunit相关NuGet包

    1. 卸载测试项目中所有旧的Xunit相关包(包括xunit、xunit.runner.visualstudio、xunit.extensions等)
    2. 重新安装适配.NET 8的稳定版包:
      • xunit(核心测试框架)
      • xunit.runner.visualstudio(Visual Studio测试运行器集成)
        不需要手动引用xunit.execution.dotnet.dll,NuGet会自动处理依赖关系,构建时将所需DLL复制到输出目录。
  • 清理缓存并重建解决方案

    1. 删除测试项目和解决方案根目录下的bin、obj文件夹
    2. 清除NuGet缓存:打开Visual Studio→工具→NuGet包管理器→包管理器设置→清除所有NuGet缓存
    3. 重启Visual Studio,然后重新生成整个解决方案
  • 检查Visual Studio测试运行器配置

    1. 确保使用的Visual Studio版本支持.NET 8(推荐VS2022 17.8及以上版本)
    2. 打开测试→测试设置→默认处理器架构,选择与项目匹配的架构(x64或x86)
    3. 如果有自定义的.runsettings文件,暂时移除或注释其中的shadowCopy等可能影响程序集加载的配置

NuGet包工作机制补充

NuGet下载的包会存储在本地缓存目录(默认路径为C:\Users\<你的用户名>\.nuget\packages),项目构建时,NuGet会自动将所需的DLL文件复制到项目的输出目录(bin\Debug\net8.0或bin\Release\net8.0),不需要手动指定DLL的路径,只要包引用正确,构建完成后输出目录中应该包含xunit.execution.dotnet.dll。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:08:10