.net - 由于 system.net.http 缺少参考的问题,无法使用 Microsoft Graph 3.2.0 运行 C# 应用程序
问题描述
system.net.http
- NuGet:4.3.4 -> 4.0.30319 -> 4.1.1.3
- NuGet:4.3.3 -> 4.0.30319 -> 4.1.1.2
- NuGet:4.3.2 -> 4.0.30319 -> 4.1.1.1
- 框架:4.6.2 > 4.0.30319 -> 4.0.0.0
现在,如果我将这样的项目设置更改为 4.7.2:
然后检查我的system.net.http assembly
:
- 框架:4.7.2 > 4.0.30319 -> 4.2.0.0
因此,上述研究表明,如果我愿意,system.net.http
我需要使用.NET Framework 4.7.2。到目前为止还可以。但 ...
Microsoft Graph 3.2.0 当您查看 Microsoft Graph 3.2.0 的依赖项时,它会说:
所以它说它依赖于.NET Framework 4.6.1对吗?
所以我卸载并重新安装了几个 NuGet 包,以便它们适用于 4.7.2,然后我修改了我的app.config
条目:
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
现在它编译了。然而,当我运行该软件时,我仍然除了这个异常(在互联网上随处可见!):
{“无法加载文件或程序集'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'或其依赖项之一。系统找不到指定的文件。”:“System.Net。 Http,版本=4.2.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a"}
我相信的那个文件在这里:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net471\lib
那是在编译期间使用的那个。
然而,当我试图找到这个 DLL 的运行时路径时,我只能找到:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
但其中的文件日期为 2019 年 3 月 19 日,文件版本为 4.8.3752.0。然而这里的一个:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net471\lib
是 01/04/2020 版本 4.6.26011.1。
所以我完全糊涂了。Microsoft Graph 3.2.0表示它依赖于.NET Framework 4.6.1,但它抱怨需要system.net.http
4.2.0.0,尽管安装了 .NET Framework 4.7.2,但我还是遇到了所有这些问题。
我过去从未遇到过使用 Microsoft Graph 的问题,只是因为我通过 NuGet Manager 升级到他们的最新库,我的工具完全坏了。
我已经尝试了关于绑定重定向和删除旧文件的所有关于 SO 的建议。我只是不明白为什么 Microsoft Graph 说它依赖于 4.6.1,但异常说它需要(并且找不到框架 4.7.2 的 4.2.0.0)。
我非常感谢解决此问题的任何具体步骤,以便我的应用程序不仅可以再次编译,而且可以像以前一样实际工作。
解决方案
我偶然发现了这个问题,并根据评论说我的 app.config 需要:
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0"/>
</dependentAssembly>
由于 Microsoft Graph 包依赖于 .NET Framework 4.6.1,我们需要使用 4.0.0.0 system.net.http
,否则会出现冲突错误。
排序。
推荐阅读
- batch-file - 将变量名存储在批处理文件的变量中
- javascript - Angular 2+:路由器更改路由/路由器插座无法识别并显示旧组件
- javascript - 无法在 Next.js 中禁用自动前缀
- math - 如何将 Math.max 或 Math.min 转换为伪代码?
- python - Python Dash - 时间滑块上的格式标记
- swift - 打开嵌入式 RTF 文件的 Mac 沙盒问题
- firebase - Firebase 等待错误:未找到某些请求的文档
- android - 编译代码 *For* x86_64 *using* ARM-Cortex-A53(android phone)
- python - 在 odoo12 社区中创建新的小部件
- html - 如何在 css-flex-float 中调整三个 div 一个左侧和另外两个右侧?