使用较新版本的 NLog 时自定义布局渲染器 'not found'

Custom layout renderer 'not found' when using newer version of NLog

我创建了一个自定义的 NLog 扩展,它使用了 NLog 3.1。除其他外,它还包含一个布局渲染器 "iis-sitename",用于检索 IIS 网站的站点名称。

我已将扩展添加到 .NET Web 服务的 NLog 配置文件。

<extensions>
    <add assemblyFile="NLog.Extensions.dll"/>
</extensions>

Web 服务可以很好地使用扩展中的布局渲染器,只要它还使用 NLog 3.1。但是,当我将网络服务中的 NLog 升级到 3.2 时,出现错误。

Layout Renderer cannot be found: 'iis-sitename'.

我假设这与版本冲突有关,因为只有 NLog version 发生了变化。扩展和 Web 服务中的代码保持不变。

有没有办法在不将扩展升级到 NLog 3.2 并继续使用 3.2 的 Web 服务的情况下解决这个问题?

注意:我无法将扩展中的 NLog 升级到 3.2(目前),因为其他也使用该扩展的 applications/services 目前仍在使用 NLog 3.1。

简而言之,我如何设置 NLog 扩展 DLL,以便使用 NLog 3.1 或 3.2 的项目可以使用它?

您可以通过将程序集绑定信息放入您的应用程序的配置文件中来指示您的应用程序使用更新版本的程序集,如下所示。

<dependentAssembly>
    <assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.2.1.0" newVersion="3.2.1.0" />
</dependentAssembly>

关于此的更多信息 here