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

Azure函数V2部署DocumentFormat.OpenXml 2.8.1遇程序集加载异常

解决Azure Functions V2部署时System.IO.Packaging加载失败问题

我之前碰到过完全一样的情况!本地运行正常,但发布到Azure就报Could not load file or assembly 'System.IO.Packaging, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'的错误,本质原因是Azure Functions V2的运行时环境和你本地开发环境的依赖版本不匹配。这里有几个亲测有效的解决办法:

方案1:添加绑定重定向

Azure Functions V2基于.NET Core/.NET 5+运行时,其中已经包含了更高版本的System.IO.Packaging,我们需要通过绑定重定向让应用指向环境中存在的版本:

  1. 在你的函数项目中找到web.config文件(如果没有就新建一个)
  2. 在<runtime>节点下添加以下配置:
<dependentAssembly>
  <assemblyIdentity name="System.IO.Packaging" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.3.0" />
</dependentAssembly>

这个配置会把所有对4.0.2.0版本的请求重定向到Azure环境中存在的4.0.3.0版本。

方案2:升级DocumentFormat.OpenXml到兼容版本

你使用的2.8.1版本比较老旧,对.NET Core环境的支持不够完善。建议升级到最新的稳定版(比如3.x及以上),新版本已经针对.NET Core/.NET 5+做了适配,大概率会直接解决这个依赖冲突问题。

方案3:确保依赖被正确部署

有时候发布过程中,部分依赖没有被正确复制到Azure的部署目录。可以在项目的.csproj文件中添加以下配置,强制包含相关依赖:

<ItemGroup>
  <PackageReference Include="DocumentFormat.OpenXml" Version="2.8.1">
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  </PackageReference>
</ItemGroup>

另外,在发布设置里请确认勾选了Include all dependencies in the deployment package选项,确保所有必要的依赖都被打包上传。

我当时是结合方案1和方案2解决的问题,你可以先尝试方案1,要是不行再升级NuGet包,应该就能解决啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:20:25