使用依赖于 .NET 6 应用程序的 NLog 的第三方库

Using a third party library which depends on NLog from a .NET 6 application

根据标题,我有一个以 DLL 形式提供的第三方库,这些 DLL 依赖于也提供的 NLog.dll (4.3.5)。当我尝试从 .NET 6 客户端启动库时,出现以下异常。 “未找到方法:System.String System.AppDomainSetup.get_ConfigurationFile()”。显然 NLog 正在寻找一个配置文件,该文件在过去应该在 App.config 文件中。在互联网上搜索,似乎可以通过调用 NLog API 来提供配置文件,但我不能这样做,因为我无法访问底层 API。有人知道使此设置正常工作的方法吗?

尽管您关于 App.config 的看法是正确的,但还有其他选择,例如我有一个使用 Nlog 的 .net 6 应用程序。我使用的配置文件称为 NLog.config(和 NLog.dev.config)。完整的细节在 NLog Configuraiton 文件文档 https://github.com/NLog/NLog/wiki/Configuration-file

错误发生在 NLog.Internal.Fakeables.AppDomainWrapper 中,它是这样初始化的:

public static AppDomainWrapper CurrentDomain => new AppDomainWrapper(AppDomain.CurrentDomain);

然后在 AppDomainWrapper ctor 中:

public AppDomainWrapper(AppDomain appDomain)
{
    BaseDirectory = appDomain.BaseDirectory;
    // SetupInformation.ConfigurationFile doesn't exist in .NET 6
    ConfigurationFile = appDomain.SetupInformation.ConfigurationFile;

许多 NLog 的构造函数都在使用这个 AppDomainWrapper.CurrentDomain 每次使用 NLog 时都会出错 class。

这是一个不错的 StackTrace:

at NLog.Internal.Fakeables.AppDomainWrapper..ctor(AppDomain appDomain) in NLog\Internal\Fakeables\AppDomainWrapper.cs:line 58
at NLog.Internal.Fakeables.AppDomainWrapper.get_CurrentDomain()
at NLog.LogFactory.get_CurrentAppDomain() in NLog\LogFactory.cs:line 154
at NLog.LogFactory..ctor() in NLog\LogFactory.cs:line 316
at NLog.LogManager..cctor() in NLog\LogManager.cs:line 133

所以我不希望你用这个旧版本。