You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6 Azure函数集成Serilog时程序集加载失败求助

.NET 6 Azure函数集成Serilog时程序集加载失败问题解决

问题详情

尝试在基于.NET 6的Azure函数应用(v4版本)中集成Serilog,相关代码及配置如下:

Startup.cs代码

public override void Configure(IFunctionsHostBuilder builder)
{
    Log.Logger = new LoggerConfiguration()
    .WriteTo.Console()
    .WriteTo.AzureAnalytics(workspaceId: "xxxxxxxxxxxxxxxxxxxxxxx",
    authenticationId: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
    .CreateLogger();

    builder.Services.AddLogging(lb => lb.AddSerilog(Log.Logger,true));

    ConfigureServices(builder.Services);
}

private void ConfigureServices(IServiceCollection services)
{
    services.RegisterApplicationServices();
}

csproj配置

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <AzureFunctionsVersion>v4</AzureFunctionsVersion>
    <DockerFastModeProjectMountDirectory>/home/site/wwwroot</DockerFastModeProjectMountDirectory>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<ItemGroup>
    <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.2.0" />
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.18.1" />
    <PackageReference Include="Serilog" Version="3.0.1" />
    <PackageReference Include="Serilog.Extensions.Logging" Version="7.0.0" />
    <PackageReference Include="Serilog.Sinks.ApplicationInsights" Version="4.0.0" />
    <PackageReference Include="Serilog.Sinks.AzureAnalytics" Version="5.0.0" />
    <PackageReference Include="Serilog.Sinks.Console" Version="4.1.0" />
</ItemGroup>
<ItemGroup>
    <ProjectReference Include="..\xxxx.Application\xxxxx.Application.csproj" />
</ItemGroup>
<ItemGroup>
    <None Update="host.json">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
</ItemGroup>
</Project>

运行错误信息

A host error has occurred during startup operation '677c62b7-bf08-4306-812c-e7ea5fbd5678'.
[2023-08-01T15:21:25.432Z] Microsoft.Azure.WebJobs.Script: Error configuring services in an external startup class. ConcurICS.FunctionApp: Could not load file or assembly 'Microsoft.Extensions.Logging, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.

解决方案

问题原因

Serilog.Extensions.Logging 7.0.0版本依赖Microsoft.Extensions.Logging 7.0.0+,但Azure Functions v4(基于.NET 6)运行时依赖的是Microsoft.Extensions.Logging 6.x版本,版本不匹配导致程序集加载失败。

具体步骤

  1. 降级Serilog.Extensions.Logging版本
    修改csproj中的Serilog.Extensions.Logging包版本为兼容.NET 6的6.x版本,推荐使用6.0.1:

    <PackageReference Include="Serilog.Extensions.Logging" Version="6.0.1" />
    
  2. 清理并重新还原NuGet包

    • 删除项目根目录下的bin和obj文件夹
    • 执行命令重新还原包:
      dotnet restore
      
  3. 验证其他包兼容性
    其他已使用的Serilog相关包均适配.NET 6,无需修改:

    • Serilog 3.0.1、Serilog.Sinks.Console 4.1.0
    • Serilog.Sinks.AzureAnalytics 5.0.0、Serilog.Sinks.ApplicationInsights 4.0.0

完成以上步骤后,重新运行Azure函数应用即可解决程序集加载错误。

内容的提问来源于stack exchange,提问作者Vishnu Babu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 13:43:28