.NET7升级后Azure FunctionApp找不到日志抽象程序集
问题解决:.NET7 Azure FunctionApp 无法加载 Microsoft.Extensions.Logging.Abstractions
问题分析
项目升级到.NET7后出现程序集加载失败,核心原因是依赖包版本不匹配:Microsoft.NET.Sdk.Functions 4.1.3 版本与.NET7的依赖存在冲突,Microsoft.Extensions.Logging.Abstractions组件可能被旧版本依赖拉低版本,或是未正确引入。
解决方案步骤
1. 升级核心Function包到.NET7兼容版本
Microsoft.NET.Sdk.Functions 4.1.3 对.NET7支持不完善,需升级到4.1.1以上的稳定兼容版本(推荐4.2.0或更高),修改项目文件对应配置:
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.2.0" />
2. 删除显式的Microsoft.Azure.WebJobs引用
Microsoft.NET.Sdk.Functions已包含Microsoft.Azure.WebJobs的正确依赖版本,手动添加的3.0.33版本会引发冲突,直接删除该行:
<!-- 删除此引用 --> <PackageReference Include="Microsoft.Azure.WebJobs" Version="3.0.33" />
3. 对齐Microsoft.Extensions系列包版本
项目中Microsoft.Extensions.DependencyInjection为7.0.0,其他同系列包需同步到.NET7兼容版本,比如升级Microsoft.Extensions.Azure:
<PackageReference Include="Microsoft.Extensions.Azure" Version="1.7.0" />
4. 清理并重建项目
执行以下命令彻底清理依赖并重新构建:
dotnet clean dotnet restore dotnet build
5. 检查关联类库的.NET版本
确认PMSX.Application、PMSX.Domain、PMSX.Infrastructure三个引用项目已升级到.NET7,且它们的依赖包版本与Function项目保持一致,避免跨项目依赖冲突。
6. 手动添加缺失的程序集(可选)
若以上步骤仍未解决,可显式引入Microsoft.Extensions.Logging.Abstractions的.NET7版本:
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="7.0.0" />
修改后的完整项目文件示例
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net7.0</TargetFramework> <AzureFunctionsVersion>v4</AzureFunctionsVersion> </PropertyGroup> <ItemGroup> <Compile Remove="FunctionInterfaces\**" /> <Compile Remove="ModuleInterfaces\**" /> <EmbeddedResource Remove="FunctionInterfaces\**" /> <EmbeddedResource Remove="ModuleInterfaces\**" /> <None Remove="FunctionInterfaces\**" /> <None Remove="ModuleInterfaces\**" /> </ItemGroup> <ItemGroup> <None Remove="Modules\MarketModule.cs~RF1b001614.TMP" /> </ItemGroup> <ItemGroup> <Compile Include="ModuleInterfaces\Base\IModule.cs" /> <Compile Include="ModuleInterfaces\IExchangeModule.cs" /> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" /> <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="5.0.1" /> <PackageReference Include="Microsoft.Extensions.Azure" Version="1.7.0" /> <PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" /> <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.2.0" /> <!-- 可选:若问题仍存在添加此行 --> <!-- <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="7.0.0" /> --> </ItemGroup> <ItemGroup> <ProjectReference Include="..\PMSX.Application\PMSX.Application.csproj" /> <ProjectReference Include="..\PMSX.Domain\PMSX.Domain.csproj" /> <ProjectReference Include="..\PMSX.Infrastructure\PMSX.Infrastructure.csproj" /> </ItemGroup> </Project>
内容的提问来源于stack exchange,提问作者HoboJeff
相关产品推荐
相关产品推荐

