Azure Function v3运行报错:无法加载System.Security.Cryptography.Pkcs程序集
问题根因
程序集加载异常的核心原因是版本不兼容:System.Security.Cryptography.Pkcs 6.0.0是面向.NET 6及更高版本设计的,你当前项目使用的.NET Core 3.1 + Azure Function v3运行环境无法适配该版本的程序集。
可落地解决方案
- 方案1:降级Pkcs包版本(改动最小,无需调整整体项目框架)
将.csproj文件中对应包的引用版本替换为适配.NET Core 3.1的5.0.1版本,修改节点如下:
修改完成后删除项目的<PackageReference Include="System.Security.Cryptography.Pkcs" Version="5.0.1" />bin、obj文件夹,依次执行dotnet clean、dotnet restore命令重新还原依赖,再编译运行即可。 - 方案2:升级项目运行环境(适合需要使用6.0+版本Pkcs特性的场景)
同步升级Azure Function的运行时和框架版本:- 把
<TargetFramework>节点值改为net6.0 - 把
<AzureFunctionsVersion>节点值改为v4 - 将所有Microsoft前缀的Nuget包升级到适配.NET 6的对应版本,重新编译部署即可。
- 把
异常排查补充
如果修改配置后仍然出现加载报错,可检查发布的部署包中是否存在System.Security.Cryptography.Pkcs.dll文件,部分场景下Azure Function部署会遗漏非核心依赖,你可以手动将该dll的「复制到输出目录」属性设置为「始终复制」,或者在发布时选择生成独立部署包,避免依赖缺失。
内容的提问来源于stack exchange,提问作者Rocky Mishra
相关产品推荐
相关产品推荐

