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

BenchmarkDotNet运行性能测试报MSB3971引用程序集错误如何解决

问题原因

MSB3971报错的触发原因是BenchmarkDotNet默认执行测试时会自动生成多目标框架的测试宿主程序,你的环境配置中存在SDK识别错误,将.NET 6.0错误识别为传统.NET Framework框架(传统.NET Framework最高版本仅为4.8,不存在v6.0版本)。

解决方案

按以下步骤依次排查即可:

  • 步骤1:检查项目根目录是否存在global.json文件
    若存在该文件,确认其中指定的SDK版本与你本地安装的.NET 6.0 SDK版本匹配,或直接删除该文件让系统自动选择最新匹配的SDK。正确的配置示例:
    {
      "sdk": {
        "version": "6.0.417",
        "rollForward": "latestMinor"
      }
    }
    
  • 步骤2:修改BenchmarkDotNet启动配置,指定仅适配当前.NET 6.0运行时
    替换原来的启动代码,显式指定运行时,禁止自动多框架适配:
    using BenchmarkDotNet.Configs;
    using BenchmarkDotNet.Jobs;
    using BenchmarkDotNet.Running;
    
    var config = DefaultConfig.Instance
        .AddJob(Job.Default.WithRuntime(CoreRuntime.Core60));
    BenchmarkRunner.Run<SortingAlgorithmBenchmark>(config);
    
    public class SortingAlgorithmBenchmark
    {
        [Benchmark]
        public void BubbleSort()
        {
            SortingAlgorithms.BubbleSort(new[] {2,3,1});
        }
    }
    
  • 步骤3:验证项目配置文件正确性
    右键项目选择「编辑项目文件」,确认根节点下的目标框架配置正确,没有错误指定为传统.NET Framework:
    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
      </PropertyGroup>
      <!-- 你的包引用等其他配置 -->
    </Project>
    
  • 步骤4:清理项目缓存并使用Release模式运行
    1. 关闭VS,删除项目根目录下的bin、obj文件夹
    2. 重新打开项目,将运行模式切换为Release
    3. 点击运行,或在项目根目录打开终端执行命令dotnet run -c Release

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:45:04