nlog Невозможно загрузить пользовательскую цель из указанной сборки - PullRequest
2 голосов
/ 10 июня 2011

Я создал следующую настраиваемую цель:

[Target("MyTarget")
public class MyTarget : TargetWithLayout

Этот класс определен в своей собственной сборке, скажем, MyTargets.dll (не настоящее имя).Файл NLog.config имеет следующие строки

<extensions>
    <add assembly="MyTargets, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</extensions>

Была определена цель для использования этого нового типа:

<target name="myTarget" xsi:type="MyTarget" />

Для этой цели был определен регистратор (опущено),

Мое приложение успешно загрузит конфигурацию, если я ссылаюсь на проект сборки целей.Если я попытаюсь сослаться на выходную DLL, она не загрузится.Если я программно добавлю цель из сборки (ссылка на bin, а не project), то она будет работать.

Кажется, что библиотеки DLL находятся в нужном месте, то есть bin dir.Тип должен существовать, потому что я могу ссылаться на тип в коде, но он, кажется, падает при попытке ссылаться на тип в коде.

Почему бы просто не сделать это в коде?Ну, это часть пакета nuget, который я создаю, и я хочу, чтобы стандартный файл конфигурации распространялся среди всех пользователей этого кода lib.

Любые предложения / идеи будут с благодарностью приняты

1 Ответ

3 голосов
/ 10 июня 2011

Оказывается, я идиот.

По несвязанным причинам я решил скопировать файл NLog.config в каталог bin при сборке, сохранив оригинал на уровне корневого проекта.Это вызвало какой-то конфликт внутри NLog.

Когда я удаляю файл конфигурации из каталога bin, тогда файл конфигурации на корневом уровне загружается правильно, и мои пользовательские цели обнаруживаются как исключенные.Если я удаляю файл конфигурации из корневого уровня проекта и помещаю его в каталог bin (т. Е. Того же уровня, что и сборка, содержащая пользовательскую цель), то загруженный файл конфигурации не сможет найти пользовательскую цель.

Итак, подведем итог: я перестал помещать файл конфигурации в каталог bin и оставил его там, где он определен (корневой уровень проекта)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...