.NET 6 Azure Function运行报错:无法加载指定程序集
问题描述
运行基于.NET 6的进程内HttpTrigger Azure Function时,出现以下错误:
'Function1'函数存在错误:无法加载文件或程序集'Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60',系统找不到指定文件。
用户提供的函数代码为标准HttpTrigger实现:
public static class Function1 { [FunctionName("Function1")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); string name = req.Query["name"]; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); name = name ?? data?.name; string responseMessage = string.IsNullOrEmpty(name) ? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." : $"Hello, {name}. This HTTP triggered function executed successfully."; return new OkObjectResult(responseMessage); } }
问题原因
错误源于依赖包版本不匹配:.NET 6对应的Azure Functions Runtime v4依赖Microsoft.Extensions.Logging.Abstractions的6.x版本,但项目或本地环境中意外引入了8.0.0.0版本,导致运行时无法找到匹配的程序集。
解决方案
修正NuGet包版本
打开项目的.csproj文件,确保Microsoft.Extensions.Logging.Abstractions的版本与.NET 6对齐(选择6.x系列稳定版本,比如6.0.16)。若存在8.0版本引用,直接替换:<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.16" />清理并重新还原依赖
在项目根目录执行以下命令,清理旧缓存并重新还原依赖:dotnet clean dotnet restore若使用Visual Studio,可右键项目→选择「清理」,再右键项目→「还原NuGet包」。
检查Azure Functions Core Tools版本
确保使用的Core Tools版本与.NET 6兼容,推荐使用v4.x稳定版本。执行以下命令查看当前版本:func --version若版本不兼容,卸载后重新安装对应版本的Core Tools。
确认本地.NET SDK环境
运行以下命令验证是否安装了.NET 6 SDK:dotnet --list-sdks同时检查
.csproj文件中的目标框架是否为net6.0:<TargetFramework>net6.0</TargetFramework>
内容的提问来源于stack exchange,提问作者Prasanjeet Debnath

