.NET 6 Azure Functions引入FluentFTP遇Microsoft.Extensions.Http版本冲突
问题原因
你的问题本质是框架版本依赖不匹配:
- 基于.NET 6开发Azure Functions时,其运行时宿主环境默认依赖
Microsoft.Extensions.Http的6.x系列版本。 - 最新版FluentFTP已升级依赖,要求使用
Microsoft.Extensions.Http7.0.0及以上(对应.NET 7+框架)。安装该版本FluentFTP后,它会自动引入高版本的Microsoft.Extensions.Http,但.NET 6的Azure Functions宿主环境中没有这个版本的程序集,因此启动时抛出文件找不到的异常。 - 降级到6.0.0或回退到2.2.0能正常启动,是因为这两个版本与.NET 6运行时的依赖版本完全兼容,宿主环境可找到对应程序集。
是否能使用所有包的最新版本?
可以通过以下方案实现:
方案1:升级Azure Functions目标框架到.NET 7/8
若业务允许,将项目目标框架从.NET 6升级到.NET 7或.NET 8,同时确保Azure Functions Runtime版本升级到4.x及以上(.NET 7/8需Runtime 4.x支持)。升级后,宿主环境会自带对应版本的Microsoft.Extensions.Http,可兼容FluentFTP的最新依赖。
方案2:配置程序集绑定重定向
通过重定向配置,让运行时将对Microsoft.Extensions.Http 7.0.0的请求指向已存在的6.0.0版本:
- 在项目根目录创建
runtimeconfig.template.json文件,添加以下内容:
{ "runtimeOptions": { "assemblyBinding": { "dependencies": [ { "name": "Microsoft.Extensions.Http", "publicKeyToken": "adb9793829ddae60", "redirectTo": "6.0.0.0", "oldVersion": "7.0.0.0" } ] } } }
- 在项目的
.csproj文件中添加以下配置,确保构建时生成正确的运行时配置:
<PropertyGroup> <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles> </PropertyGroup>
该方案无需升级框架,即可同时使用最新版FluentFTP和适配.NET 6的HTTP相关包。
方案3:选择兼容.NET 6的FluentFTP最新版本
查看FluentFTP的NuGet版本列表,选择最新且依赖Microsoft.Extensions.Http 6.x系列的版本安装。这样既能使用较新的FluentFTP功能,又不会引入高版本依赖冲突。
内容的提问来源于stack exchange,提问作者Presi
相关产品推荐
相关产品推荐

