C# 找不到log4net.netcore 3.1方法

C# 找不到log4net.netcore 3.1方法,c#,.net-core,log4net,C#,.net Core,Log4net,背景: 这是一个.netcore 3.1 web api。它引用一个DLL,该DLL引用一个SDK来创建到第三方应用程序的连接。 创建服务器对象(在DLL中)时,会引发以下错误: 我添加了Microsoft.Extensions.Logging.Log4Net.AspNetCorenuget软件包,并尝试了logger factory方式: public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILog

背景: 这是一个.netcore 3.1 web api。它引用一个DLL,该DLL引用一个SDK来创建到第三方应用程序的连接。 创建服务器对象(在DLL中)时,会引发以下错误:

我添加了
Microsoft.Extensions.Logging.Log4Net.AspNetCore
nuget软件包,并尝试了logger factory方式:

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddLog4Net();
我也试过:

我在解决方案中也有一个
log4net.config
。有没有关于如何解决错误的建议


Apache丢失了用于对log4net程序集进行签名的私钥,因此较旧版本的log4net程序集具有不同的公钥令牌

没有足够的信息知道这是否是你的心病,但听起来可能有关联

如果您有一个依赖于使用旧公钥令牌的旧版本log4net的依赖项,但您解析了新版本的log4net(因为您的项目直接引用它,或者您的其他依赖项之一引用它)然后,只要针对旧log4net编译的代码调用其方法之一,就可以在运行时获得程序集加载异常或缺少方法异常


对此的一般修复方法是确保您的依赖关系树中只有一个版本的log4net(或至少所有版本都具有相同的公钥令牌)。

最有可能的是dll和您的应用程序具有不同版本的依赖关系。此代码是否
loggerFactory。AddLog4Net()
导致错误。提供所用软件包的详细信息
Microsoft.Extensions.Logging.Log4Net.AspNetCore
。您还可以确保log4net中提到的所有logger配置都存在。从屏幕截图展开Dependencies项,您应该只通过将鼠标悬停在冲突包上方来查看有关错误的更多详细信息。导致错误的代码位于正在实例化的SDK的构造函数中。应用程序中的日志代码本身并没有失败。我将对此进行调查,这听起来正是我的问题。dll引用了至少有几年历史的log4net程序集。该项目使用的是nuget最新版本。我尝试在我的应用程序中没有对log4net的引用(但dll仍然有),但在运行时也失败了,这就是问题所在。我在解决方案中加入了一个旧版本的log4net,并将其用于所有依赖项,以匹配dll版本,解决了错误。
 public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddLog4Net();