.NET Framework 4.7中WebJob启动时Microsoft.Extensions.Hosting.Abstractions加载失败求助
解决方案:Azure WebJob启动时Microsoft.Extensions.Hosting.Abstractions版本冲突问题
问题根源
你的项目存在依赖版本不兼容:
- 你使用的
Microsoft.Azure.WebJobs3.0.31属于WebJobs SDK 3.x系列,它间接依赖的是Microsoft.Extensions.Hosting.Abstractions2.x版本 - 但项目中直接引用了
Microsoft.Extensions.Configuration、Microsoft.Extensions.Http等6.0.0版本的包,这些包依赖更高版本的Microsoft.Extensions.*组件,导致运行时出现版本匹配错误
具体解决步骤
1. 统一Microsoft.Extensions系列包版本
将所有6.0.0版本的Microsoft.Extensions.*包降级到与WebJobs 3.x兼容的3.1.x LTS版本(3.1是长期支持版本,稳定性高),同时移除手动添加的Microsoft.Extensions.Hosting.Abstractions引用。
修改后的csproj中PackageReference部分如下:
<ItemGroup> <PackageReference Include="Microsoft.Azure.WebJobs.Extensions" Version="4.0.1" /> <PackageReference Include="Microsoft.Azure.WebJobs.Logging.ApplicationInsights" Version="3.0.30" /> <PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.32" /> <PackageReference Include="Microsoft.Extensions.Http" Version="3.1.32" /> <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="3.1.32" /> <PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.32" /> <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.32" /> <PackageReference Include="Microsoft.WindowsAzure.ConfigurationManager" Version="3.2.1" /> <PackageReference Include="Microsoft.Azure.WebJobs.Core" Version="3.0.31" /> <PackageReference Include="Microsoft.Azure.WebJobs" Version="3.0.31" /> </ItemGroup>
2. 添加程序集绑定重定向(可选但推荐)
如果修改后仍有版本冲突,在项目的app.config中添加绑定重定向,强制将旧版本的Microsoft.Extensions.Hosting.Abstractions重定向到实际使用的版本:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Extensions.Hosting.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-3.1.32" newVersion="3.1.32" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
3. 清理并重建项目
- 执行
dotnet clean命令清理项目 - 执行
dotnet restore重新下载依赖 - 重新编译并发布WebJob到Azure
为什么之前的方法无效?
- 直接添加
Microsoft.Extensions.Hosting.Abstractions 2.1.0会触发NuGet降级检测:因为其他依赖包(如WebJobs相关)已经间接引用了更高的2.1.1版本,NuGet不允许手动强制降级 - 单独降级
Microsoft.Extensions.Configuration.Abstractions到2.1.1会和其他6.0.0的Microsoft.Extensions.*包产生新的冲突,无法从根本上解决版本不一致的问题
内容的提问来源于stack exchange,提问作者Penguen
相关产品推荐
相关产品推荐

