2015-01-15 1 views
2

Я создал пользовательское расширение NLog, которое использует NLog 3.1. Он содержит, среди прочего, средство визуализации макета «iis-sitename» для получения имени сайта на сайтах IIS.Пользовательский макет рендеринга «не найден» при использовании более новой версии NLog

Я добавил расширение в файл конфигурации NLog веб-службы .NET.

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

Веб-служба может использовать макет визуализатор из расширения просто отлично, до тех пор, как он также использует NLog 3,1. Но когда я обновляю NLog в веб-службе до 3.2, я получаю сообщение об ошибке.

Layout Renderer не может быть найден: 'iis-sitename'.

Я предполагаю, что это что-то делать с версии конфликта, так как только версии NLog изменилось. Код как в расширении, так и в веб-службе остался неизменным.

Есть ли способ решить эту проблему без обновления расширения до NLog 3.2 и продолжать использовать 3.2 для веб-службы?

Примечание: Я не могу обновить NLog в расширении до 3.2 (пока), поскольку другие приложения/службы, которые также используют расширение, в настоящее время по-прежнему используют NLog 3.1.

Вкратце, как я могу создать DLL-расширение DLL, чтобы он мог использоваться проектами с использованием NLog 3.1 или 3.2?

ответ

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.

Смежные вопросы