我正在使用Azure函数,我遇到了一个涉及NuGet "Microsoft.Extensions.Logging.Abstractions“的问题。我的解决方案运行得非常好,但是最近我添加了一个依赖于"Microsoft.Extensions.Logging.Abstractions 5.0.0“的依赖项。这个项目建设得很好,但当我运行它时。出现以下错误:“无法加载文件或程序集'Microsoft.Extensions.Logging.Abstractions,Version=5.0.0.0‘。
我在Github问题上找到了一些与此相关的信息。我发现的建议如下:
我也尝试使用同一个NuGet的多个版本,但是我得到了相同的错误(我尝试了这个链接中提到的方法)。
有办法解决这个问题吗?
更新:我创建了一个最小的例子,在这个问题上可以被复制。它位于这里。分支feature/WithLogging3按预期运行,但是feature/WithLogging5会失败,其消息是“主机尚未启动”。如果我启用了在公共语言运行时异常情况下中断调试器的选项,则会得到错误“无法加载文件或程序集'Microsoft.Extensions.Logging.Abstractions、Version=5.0.0.0、Culture=neutral、PublicKeyToken=adb9793829ddae60‘。系统找不到指定的文件”。
似乎只有在将ILogger注入到函数中时,项目才会失败。例如,这一次(直接取自VisualStudio2019 .NET Core3.1中的Azure函数模板):
[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);
}如果删除注入的ILogger (以及在方法中使用记录器的行),则项目运行良好。但是,我需要使用记录器。
我知道,我提供的示例不包括持久函数,但它会复制问题,即使您向项目添加了持久函数,或者用接受注入ILogger的持久函数替换当前函数,它也会重现。
顺便说一下,如果它有任何变化,我使用的是Visual 2019 (Enterprise)。
发布于 2021-12-30 08:07:12
我试图重现这个问题,因为在安装包.Net Microsoft.Extensions.Logging.Abstractions版本5.0.0时,在安装包Microsoft.Extensions.Logging.Abstractions版本5.0.0时,没有出现以下步骤对5.0.0内核3.1和6版本的版本都有错误。
Microsoft.Extensions.Logging.Abstractions的包5.0.0版本dotnet核心CLI命令。dotnet add package Microsoft.Extensions.Logging.Abstractions --version 5.0.0
并一个一个地执行这些函数,如下所示,它正在成功运行:
蓝色持久功能.Net Core 3.1

蓝色耐用功能.Net Core 6

最新答复:
将Microsoft.Extensions.Logging.Abstractions版本的5.0.0添加到提供给Azure函数的最小示例中,并且它正在成功运行。


https://stackoverflow.com/questions/70526466
复制相似问题