Azure Function SDK引发Newtonsoft.Json程序集加载异常求助
解决Azure Functions中Newtonsoft.Json版本冲突问题
你遇到的是典型的程序集版本冲突问题——项目里的NuGet包对Newtonsoft.Json依赖版本不一致,导致运行时找不到匹配的版本。我来拆解问题并给出具体解决步骤:
问题根源分析
你安装的几个包对Newtonsoft.Json的依赖版本不兼容:
Microsoft.Azure.Devices.Shared 1.15.1依赖Newtonsoft.Json 10.0.0.0AzureFunctions.Autofac 3.0.7则需要更高版本(比如你最初用的12.0.1)
降级到10.0.1后,又触发了另一个包对12.0.1的依赖需求,陷入两难局面。
具体解决方案
方案1:使用程序集绑定重定向(最推荐)
这是.NET Framework解决版本冲突的标准方法,通过配置让运行时把对旧版本的请求重定向到你实际安装的版本。
- 打开项目的
web.config文件(没有的话右键项目→添加→新建项→Web配置文件) - 在
<configuration>节点下添加以下配置:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <!-- 把所有旧版本请求重定向到你要保留的版本,这里以12.0.1为例 --> <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.1.0" /> </dependentAssembly> </assemblyBinding> </runtime>
方案2:升级依赖包到兼容版本
尝试把Microsoft.Azure.Devices.Shared升级到支持Newtonsoft.Json 12.x的版本——去NuGet查看该包的更新日志,找一个既兼容.NET Framework 4.6,又依赖高版本Json.NET的版本,从根源上消除冲突。
方案3:对齐Azure Functions运行时默认版本
如果你用的是v1版Azure Functions(基于.NET Framework),它默认自带Newtonsoft.Json 9.0.1。可以尝试把项目的Json.NET版本降到9.0.1,看看是否能适配所有依赖包。不过这个方法可能限制其他包的使用,优先级低于前两个方案。
验证步骤
- 右键项目→清理,清除旧的编译文件
- 右键项目→生成,重新编译
- 本地运行Azure Functions,测试Twin实例创建和Json反序列化代码是否正常
最后提个小建议:以后安装NuGet包时,多看看包管理器的“依赖项”视图,提前排查版本冲突问题。
内容的提问来源于stack exchange,提问作者Vishnu Kv
相关产品推荐
相关产品推荐

