c# - 运行 BenchmarkDotNet 时出现“错误的程序集绑定重定向”
问题描述
在我的项目中为某个方法运行 BenchmarkDotNet 时,我收到一些“错误的程序集绑定重定向”警告/错误消息打印到屏幕上。这让我有点困惑,因为我认为程序集绑定重定向是一个 .Net Framework 概念,而我的项目是 .Net Core 3.0。谷歌搜索警告/错误消息没有结果。有关这些消息含义的任何提示,以及可能如何解决问题。我尝试清理 Nuget 缓存、恢复 Nuget 包、清理和重建解决方案,但没有任何帮助。
// BeforeAnythingElse
// Benchmark Process Environment Information:
// Runtime=.NET Core 3.0.0 (CoreCLR 4.700.19.46205, CoreFX 4.700.19.46214), X64 RyuJIT
// GC=Concurrent Workstation
// Job: DefaultJob
OverheadJitting 1: 1 op, 308100.00 ns, 308.1000 us/op
// Wrong assembly binding redirects for System.Data.Common.resources, Version=4.2.1.0, Culture=en-US, PublicKeyToken=b03f5f7f11d50a3a.
// Wrong assembly binding redirects for System.Data.Common.resources, Version=4.2.1.0, Culture=en, PublicKeyToken=b03f5f7f11d50a3a.
// Wrong assembly binding redirects for System.Data.SqlClient.resources, Version=4.6.0.0, Culture=en-US, PublicKeyToken=b03f5f7f11d50a3a.
// Wrong assembly binding redirects for System.Data.SqlClient.resources, Version=4.6.0.0, Culture=en, PublicKeyToken=b03f5f7f11d50a3a.
// Wrong assembly binding redirects for System.Private.Xml.resources, Version=4.0.1.0, Culture=en-US, PublicKeyToken=cc7b13ffcd2ddd51.
// Wrong assembly binding redirects for System.Private.Xml.resources, Version=4.0.1.0, Culture=en, PublicKeyToken=cc7b13ffcd2ddd51.
解决方案
简短的回答是您可以忽略此警告。
长答案:出于某种原因,VS 有时会为引用 .NET Standard 库的完整 .NET Framework 项目生成无效的程序集绑定重定向。过去给 BenchmarkDotNet 用户带来了很多麻烦:
- https://github.com/dotnet/BenchmarkDotNet/issues/895,
- https://github.com/dotnet/BenchmarkDotNet/issues/667 ,
- https://github.com/dotnet/BenchmarkDotNet/issues/896 ,
- https://github.com/dotnet/BenchmarkDotNet/issues/942。
我决定实现一个丑陋的解决方法,手动搜索.dll
文件并在 .NET Framework 无法这样做时加载它。
当然,这仅适用于完整的 .NET Framework。当我将 BenchmarkDotNet 移植到 .NET Standard 2.0 时,我忘记了我们不需要为 .NET Core 执行此操作。作为最终结果,您会收到这个令人困惑的警告。
我已经发送了一个修复该问题的 PR:https ://github.com/dotnet/BenchmarkDotNet/pull/1365 ,这个变通办法现在只对完整的 .NET Framework 项目执行
推荐阅读
- c - 关于在 c 中使用 fgets 和 scanf 读取输入的问题
- python - Music21:为乐谱中的所有和弦获取罗马数字,考虑到键的变化和未指定的键
- javascript - 在 window.onload 事件中不能做任何事情
- excel - 是否可以在 IF 公式或 Countif 公式中将 2 个数组连接在一起
- python - 合并“numpy.int64”和“pandas.core.series.Series”
- sql-server - SQL 正在删除前导零
- ruby-on-rails - 我想使用带有 ruby on rails 的 postgre 为我的数据库播种一个 json 文件
- linux - 这个 ip linux 命令是什么意思?
- java - 使用 CountDownTimer 方法暂停循环,直到方法完成
- arrays - Presto:从json中提取最后一个元素