首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Azure持久函数中使用Microsoft.Extensions.Logging.Abstraction 5.0.0

如何在Azure持久函数中使用Microsoft.Extensions.Logging.Abstraction 5.0.0
EN

Stack Overflow用户
提问于 2021-12-30 00:57:07
回答 1查看 1.4K关注 0票数 0

我正在使用Azure函数,我遇到了一个涉及NuGet "Microsoft.Extensions.Logging.Abstractions“的问题。我的解决方案运行得非常好,但是最近我添加了一个依赖于"Microsoft.Extensions.Logging.Abstractions 5.0.0“的依赖项。这个项目建设得很好,但当我运行它时。出现以下错误:“无法加载文件或程序集'Microsoft.Extensions.Logging.Abstractions,Version=5.0.0.0‘。

我在Github问题上找到了一些与此相关的信息。我发现的建议如下:

  1. 将"Microsoft.Extensions.Logging.Abstractions“降级为3.1.0版。我不能这样做,因为我有一个第三方依赖关系,它引用同一个NuGet,但使用5.0.0版本。
  2. 升级到.NET 5.0。我不能这样做,因为我需要使用持久的函数,而且在.NET 5.0的Azure函数中还不支持这些函数。

我也尝试使用同一个NuGet的多个版本,但是我得到了相同的错误(我尝试了这个链接中提到的方法)。

有办法解决这个问题吗?

更新:我创建了一个最小的例子,在这个问题上可以被复制。它位于这里。分支feature/WithLogging3按预期运行,但是feature/WithLogging5会失败,其消息是“主机尚未启动”。如果我启用了在公共语言运行时异常情况下中断调试器的选项,则会得到错误“无法加载文件或程序集'Microsoft.Extensions.Logging.Abstractions、Version=5.0.0.0、Culture=neutral、PublicKeyToken=adb9793829ddae60‘。系统找不到指定的文件”。

似乎只有在将ILogger注入到函数中时,项目才会失败。例如,这一次(直接取自VisualStudio2019 .NET Core3.1中的Azure函数模板):

代码语言:javascript
复制
[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)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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版本的版本都有错误。

  1. 在.Net Core3.1和6中创建了两个Azure持久函数项目。
  2. 在VS代码项目的终端中添加了使用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函数的最小示例中,并且它正在成功运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70526466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档