You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Functions V1运行时RestSharp.dll版本冲突问题求助

问题分析与解决方案

你的猜测完全正确——Azure Functions本地CLI运行时确实会优先加载自身目录下的RestSharp.dll,而非项目依赖的版本,这就是引发System.TypeLoadException的根本原因。

冲突产生的原因

Azure Functions CLI(本地运行时)启动时,会将自身安装目录(比如你找到的AppData\local\Azure.Functions.Cli\1.0.12)下的程序集加载到应用域中,且这个目录的加载优先级高于你的项目输出目录。当你的函数尝试加载RestSharp.IAuthenticator时,CLR会优先匹配到CLI自带的105.2.3.0版本,但你的项目代码是基于104.4.0.0版本编译的,两个版本的类型定义不兼容,因此抛出类型加载异常。

可行的解决方法

以下方案按推荐程度排序:

1. 添加程序集绑定重定向(推荐)

通过绑定重定向强制CLR将对105.2.3.0版本RestSharp的请求,重定向到你项目使用的104.4.0.0版本。具体操作:

  • 在Function项目根目录创建或修改web.config(.NET Framework)或app.config(.NET Core/.NET 5+),添加以下配置:
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="RestSharp" publicKeyToken="null" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-105.2.3.0" newVersion="104.4.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

该配置会让所有版本≤105.2.3.0的RestSharp请求,都指向你项目的104.4.0.0版本。

2. 升级项目RestSharp版本与CLI保持一致

将项目依赖的RestSharp NuGet包升级到105.2.3.0版本,让项目和CLI使用相同版本的程序集,从根源上避免冲突。注意:升级前要测试代码是否兼容105.2.3.0版本,不同版本可能存在API变更。

3. 手动替换CLI目录中的RestSharp.dll(临时方案)

把项目输出目录里的104.4.0.0版本RestSharp.dll,复制替换到AppData\local\Azure.Functions.Cli\1.0.12目录下的同名文件。但此方案是临时的,因为更新Azure Functions CLI时,该目录下的文件会被覆盖,需要重新替换,不推荐长期使用。

额外提示

在Azure云环境运行函数时,通常不会遇到这个问题——云环境的Functions运行时依赖的程序集版本和本地CLI不同,且会优先加载你部署的项目依赖。本地解决冲突后,记得在云环境验证函数的运行状态。

内容的提问来源于stack exchange,提问作者alcoforado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:00:32