Azure Functions v4运行报错:找不到Microsoft.Extensions.Options程序集
问题描述
运行Azure Functions v4(目标框架net6.0)时触发以下错误:
System.IO.FileNotFoundException: 'Could not load file or assembly 'Microsoft.Extensions.Options, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.'
项目一周前可正常运行,近期仅在其他项目升级了EF Core 7,当前函数项目的包引用配置如下:
<PropertyGroup> <TargetFramework>net6.0</TargetFramework> <AzureFunctionsVersion>v4</AzureFunctionsVersion> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" /> <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.Http" Version="7.0.0" /> <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.3" /> </ItemGroup>
已尝试卸载重装所有NuGet包,调试文件夹中存在Microsoft.Extensions.Options.dll(v7)但仍报错,近期升级了VS 2022到17.4.1版本。
解决方案
1. 统一Microsoft.Extensions包版本为6.x
你的函数项目目标框架是net6.0,而Microsoft.NET.Sdk.Functions 4.1.3依赖的是Microsoft.Extensions 6.x系列包,混用7.0版本包会直接导致版本冲突,触发程序集加载异常。将所有7.0版本的Microsoft.Extensions相关包降级到6.x稳定版:
<ItemGroup> <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" /> <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.1" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.Http" Version="6.0.0" /> <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.3" /> </ItemGroup>
2. 配置程序集绑定重定向(降级后仍报错时使用)
在项目根目录创建runtimeconfig.template.json文件,添加绑定重定向规则强制加载正确版本:
{ "configProperties": { "Microsoft.NETCore.DotNetHostPolicy": { "BindingRedirects": { "Microsoft.Extensions.Options": { "Version": "6.0.0.0", "PublicKeyToken": "adb9793829ddae60" } } } } }
也可以直接在项目文件(.csproj)中开启自动绑定重定向:
<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup>
3. 清理VS缓存与项目输出目录
- 关闭VS 2022,删除项目下的
bin、obj文件夹 - 删除VS组件缓存:找到
%LOCALAPPDATA%\Microsoft\VisualStudio\17.0_xxxx\ComponentModelCache(xxxx为你的VS实例ID)并删除该目录 - 重启VS后重新生成解决方案
4. 更新Microsoft.NET.Sdk.Functions到兼容最新版
将Microsoft.NET.Sdk.Functions升级到4.x系列的最新稳定版(如4.2.0及以上),新版本对net6.0的兼容性更强,能降低版本冲突概率。
内容的提问来源于stack exchange,提问作者Thusitha
相关产品推荐
相关产品推荐

