“ILoggingBuilder”不包含“AddFilter”的定义

问题描述 投票:0回答:1

我需要将 .NET 6 控制台应用程序转换为服务。我按照 MS 的样板样本得出了这个:

using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging.EventLog;

namespace MyService
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            var host = Host.CreateDefaultBuilder(args)
                .UseWindowsService()
                .ConfigureLogging(options =>
                {
                    if (OperatingSystem.IsWindows())
                    {
                        options.AddFilter<EventLoggerProvider>(level => logLevel.Information);
                    }
                })
                .ConfigureServices(services =>
                {
                    services
                    .AddHostedService<ServiceWorker>()
                    .Configure<EventLogSettings>(config => {
                        config.Name = "Application";
                        config.SourceName = "Service";
                    });
                })
                .Build();

            await host.RunAsync();
        }
    }
}

这给了我这些错误:

“ILoggingBuilder”不包含“AddFilter”的定义,并且没有 可访问的扩展方法“AddFilter”接受第一个参数 可以找到类型“ILoggingBuilder”(您是否缺少使用 指令还是程序集参考?)

Program.cs(16,43,16,62):错误CS0246:类型或命名空间名称 找不到“EventLoggerProvider”Program.cs(16,33,16,63): 错误CS1061:“ILoggingBuilder”不包含定义 “AddFilter”并且没有可访问的扩展方法“AddFilter”接受 可以找到“ILoggingBuilder”类型的第一个参数

我无法在任何地方找到需要添加到已使用的 2x 项目/类之上的 nuget 包或程序集引用。我尝试了从所示版本到最新版本的所有版本,但仍然遇到相同的错误。

Installed nuget packages

c# windows-services .net-6.0
1个回答
0
投票

当你遇到这样的错误,并且你不知道特定函数来自哪个包时,你可以使用Microsoft api文档,在搜索字段中你可以写“AddFilter”,你可以找到你的方法以及它来自哪里:

Definition
Namespace:Microsoft.Extensions.Logging
Assembly:Microsoft.Extensions.Logging.dll
Package:Microsoft.Extensions.Logging v8.0.1 

因此您必须添加 Microsoft.Extensions.Logging 包并在代码中添加 using

© www.soinside.com 2019 - 2024. All rights reserved.