将所有serilog放在类库的链接中,其他项目使用类库dll作为参考不起作用。这可能吗

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

我需要在 .Net Framework 和 Core 中的许多项目中使用 Serilog。如果所有 Serilog nuget 引用都可以链接到一个 DLL 并且可以引用该 DLL 来使用 Serilog,那就太好了。 这可能吗? 从尝试来看,这似乎不可能。 有什么想法可以实现这一点吗?

我创建了一个类库并将 Serilog Nuget 引用安装到该类库中,然后继续编译该类库以生成 DLL。 当其他项目引用此 DLL 时,可以找到 DLL 中的 Serilog 引用。

如果 .Net Core (.Net 6) 类库作为参考项目包含在 .Net Core 项目中,则可以通过该项目找到 Serilog 参考。

.Net Framework 4.8 的情况并非如此。如果 .Net Framework 4.8 类库包含在 .Net Framework 4.8 项目的参考项目中,则该项目无法找到 Serilog 引用。有什么办法可以找到 Serilog 参考文献吗?

c# serilog
1个回答
0
投票

你不需要在每个类libaray中引用serilog。您可以使用界面。我创建了一个名为 SerilogWrapper 的类,它实现了 ILogger 接口。此类充当 Serilog 的包装器,您现在可以使用 ILogger 接口与日志记录方法进行交互。 示例

public interface ILogger
{
    void LogInformation(string information);

    void LogError(string information);

    void LogError(Exception ex, String msgException);

    void LogFlush();
}

public class SerilogWrapper : ILogger
{
    public void LogInformation(string information)
    {
        Log.Information(information);
    }

    public void LogError(string information)
    {
        Log.Error(information);
    }

    public void LogError(Exception ex, String msgException)
    {
        Log.Error(ex, msgException);
    }

    public void LogFlush()
    {
        Log.CloseAndFlush();
    }
}

现在,SomeClassUsingLogger 类不直接引用 Serilog。它依赖于ILogger接口,使其更加灵活。您将来可以轻松切换到不同的日志框架,而无需修改 SomeClassUsingLogger 类。

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