无法加载文件或程序集 System.ValueTuple 版本=4.0.3.0

Could not load file or assembly System.ValueTuple Version=4.0.3.0

我收到以下运行时异常,但我认为我的情况与目前为止看到的十几个不同,其中大部分都是几年前的。

Could not load file or assembly 'System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified.

当他们第一次将库纳入核心语言时,我们一直在使用 System.ValueTuple 和 运行 解决这些常见问题。从那时起,我们删除了对旧 nuget 包的所有引用,所有项目都以 4.7 为目标。

从那时起,我们就在整个解决方案中成功地使用了 ValueTuple 构造,没有出现任何问题。到目前为止,我有一个失败的特定调用,而其他 return ValueTuple 的调用在同一方法中成功。我不知道有什么区别,因为所有调用都使用自定义对象,这些对象通过 SignalR 集线器通过如下接口序列化:

Task<(MyObject myobj, Guid myguid)> GetStuffd(Guid id);

我将我们所有的项目都升级到了 4.7.2。我删除了每个 app.config 文件中的每个绑定重定向。依然没有。而且由于其他 ValueTuple 调用来自同一个项目,我认为我在这些解决方案方面走的路不对。有什么想法吗?

问题实际上出在服务器端,从我的主机服务中删除绑定重定向很容易解决了问题。

值得注意的是,新的 .Net Standard 2.0 库是这方面的催化剂。我对 .Net Standard class 库的调用是引发问题的原因。这与其他已经使用 ValueTuple 的调用不同。

毕竟清除绑定重定向确实是解决方案。