我创建了一个自定义NLog扩展,它使用 NLog 3.1 。除其他外,它包含一个布局渲染器“iis-sitename”,用于检索IIS网站的站点名称。
我已将扩展名添加到.NET Web服务的NLog配置文件中。
<extensions>
<add assemblyFile="NLog.Extensions.dll"/>
</extensions>
Web服务可以使用扩展中的布局渲染器,只要它也使用 NLog 3.1 。但是当我将Web服务中的NLog升级到 3.2 时,我收到错误。
无法找到布局渲染器:'iis-sitename'。
我认为这与版本冲突有关,因为只有NLog 版本已更改。扩展和Web服务中的代码都保持不变。
有没有办法可以解决这个问题,而无需将扩展程序升级到NLog 3.2并继续使用3.2进行Web服务?
注意:我无法将扩展中的NLog升级到3.2(尚未),因为其他也使用扩展的应用程序/服务目前仍在使用NLog 3.1。
简而言之,我如何设置NLog扩展DLL,以便项目可以使用NLog 3.1或3.2?
答案 0 :(得分:1)
您可以通过将程序集绑定信息放入应用程序的配置文件中来指导您的应用程序使用较新版本的程序集。
<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的详情。