.NET 8 Azure Function自定义启动类配置构建失败求助
.NET 8 Azure Functions自定义Startup类加载程序集错误
我在使用.NET 8版本的Azure Function,按照微软官方文档实现了自定义Startup类,代码如下:
using System; using System.IO; using Microsoft.Azure.Functions.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System.Xml.Linq; [assembly: FunctionsStartup(typeof(Startup))] namespace Function; public class Startup : FunctionsStartup { private IConfiguration Configuration { get; set; } public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddHttpClient(); } public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { var context = builder.GetContext(); builder.ConfigurationBuilder .AddJsonFile(Path.Combine(context.ApplicationRootPath, "function.json"), optional: true, reloadOnChange: false) .AddJsonFile(Path.Combine(context.ApplicationRootPath, $"function.{context.EnvironmentName}.json"), optional: true, reloadOnChange: false) .AddEnvironmentVariables(); } }
运行函数时出现以下错误:
Error building configuration in an external startup class. Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. A host error has occurred during startup operation '2fff8edb-0e76-4789-b51b-bdcbea0ad107'. Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. Value cannot be null. (Parameter 'provider') Press any key to continue....[2023-12-20T21:35:26.832Z] Error building configuration in an external startup class. Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. A host error has occurred during startup operation 'e8145c61-4903-402b-b164-3f9c3866817e'. Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. Error building configuration in an external startup class. Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. A host error has occurred during startup operation '7b68f1b4-7d74-4221-afe2-13ec1ab77ef7'. Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. Error building configuration in an external startup class. Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. A host error has occurred during startup operation '9c04f584-294b-4f01-9c70-ba1df345ce13'. Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. Error building configuration in an external startup class. Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. A host error has occurred during startup operation '2f294885-00a4-46a1-b4f8-5cb7c55ac9b0'. Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. Error building configuration in an external startup class. Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. A host error has occurred during startup operation '0b2168d4-efdc-4cdc-8100-2575c5b0a77a'. Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. Error building configuration in an external startup class. Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. A host error has occurred during startup operation 'd2ba0a10-bbe7-4dea-a11d-ca64de26ea84'. Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Function: Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified.
我的项目包引用如下:
<PackageReference Include="Microsoft.Azure.AppConfiguration.Functions.Worker" Version="7.0.0" /> <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Abstractions" Version="1.3.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues" Version="5.2.0" /> <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="5.2.2" /> <PackageReference Include="Microsoft.Extensions.Azure" Version="1.7.1" /> <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Identity.Core" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" /> <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.2.0" />
host.json配置:
{ "version": "2.0", "logging": { "applicationInsights": { "samplingSettings": { "isEnabled": true, "excludedTypes": "Request" }, "enableLiveMetricsFilters": true } } }
我查阅了相关问题但未找到解决方案,希望得到帮助。
解决方案建议
1. 升级核心SDK包版本
Microsoft.NET.Sdk.Functions 4.2.0版本默认依赖.NET 6/7相关的扩展包,和你手动引用的.NET 8版本包存在兼容性冲突。建议升级到兼容.NET 8的最新稳定版本(如4.3.0及以上),它会自动管理依赖的Microsoft.Extensions系列包版本:
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.3.0" />
2. 移除手动引用的冲突包
升级核心SDK后,删除所有手动添加的Microsoft.Extensions.Configuration.*、Microsoft.Extensions.Http、Microsoft.Extensions.Logging.*等包引用,这些依赖会由Microsoft.NET.Sdk.Functions自动引入匹配版本,避免版本不一致问题。
3. 清理并重建项目
- 删除项目目录下的
bin和obj文件夹 - 执行命令:
dotnet clean && dotnet restore - 重新生成并运行项目
4. 确认目标框架设置
检查项目文件(.csproj)中目标框架是否为net8.0:
<TargetFramework>net8.0</TargetFramework>
5. 添加程序集绑定重定向(可选)
如果升级后仍存在加载问题,可添加app.config文件配置绑定重定向:
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Extensions.Configuration.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
内容的提问来源于stack exchange,提问作者Saeid Mirzaei
相关产品推荐
相关产品推荐

