c# - 绑定重定向不起作用时该怎么办?
问题描述
我的处境让人想起“DLL 地狱”。我想我正在使用一堆可能会混淆情况的 nuget 包。
投诉是在运行时找不到 System.Net.Http 4.0.0.0
System.IO.FileLoadException:无法加载文件或程序集“System.Net.Http,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
但是,我的 app.config 中有以下内容:
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
</dependentAssembly>
我希望任何加载 4.0.0.0 的尝试都会加载 4.1.0.0 ,但这并没有发生。我不知道为什么。
这也可能是相关的,这发生在旧的单元测试中。app.config 在单元测试项目中。
PS 我在这个一般领域看到了其他问题,但他们没有回答我的问题,因为我在这里使用 100% C# 代码。
解决方案
我感觉到你的痛苦。去年夏天,我为此损失了将近一周的时间。我假设这是一个 .NET Framework(即非核心)项目。删除 System.Net.Http NuGet 包和该程序集的所有绑定重定向。那“应该只是解决”您的问题(不保证)
如果您四处搜索,您应该会发现 Microsoft 产品团队的某个人为混乱道歉并说不应该有 NuGet 包来解决这个问题(我认为它在 GitHub 问题讨论中)。
这是凭记忆 - 对不起,我不再在那里工作,所以我无法检查我的笔记。
推荐阅读
- swift - MFMailComposeViewControllerDelegate 没有在其他类 swift 4 中被调用
- javascript - javascript - 从光标后的一点开始画一条线
- reactjs - React 服务器渲染应用程序中 ComponentDidMount 的替代方案是什么?
- vba - VBA CountIF 不会计算整个列
- sql - 如何从喜欢的地方选择特殊字符 - SQL Server
- tsql - 当日期以朱利安格式存储为 int 时,获取最近 5 天的数据
- javascript - javascript将数字四舍五入到小数点后两位
- go - 使用 golang dep 来自同一 github 源的不同包版本
- wordpress - 使用 URL 搜索附件 ID(区分大小写)
- python - 图像分割后如何校正边界