gpt4 book ai didi

.net - nlog 无法从引用的程序集中加载自定义目标

转载 作者:行者123 更新时间:2023-12-04 06:23:19 25 4
gpt4 key购买 nike

我创建了以下自定义目标:

[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 引用不是项目),那么它就可以工作。

DLL 似乎在正确的位置,即 bin dir。该类型必须存在,因为我可以在代码中引用该类型,但在尝试引用代码中的类型时似乎失败了。

为什么不直接用代码来做呢?它是我正在构建的 nuget 包的一部分,我想要一个标准配置文件分发给这个代码库的所有使用者。

任何建议/想法将不胜感激

最佳答案

原来我是个白痴。

由于无关的原因,我决定在构建时将 NLog.config 文件复制到 bin 目录,同时将原始文件保留在根项目级别。这在 NLog 中引起了某种冲突。

当我从 bin 目录中删除配置文件时,根级别的配置文件会正确加载,并且我的自定义目标被发现为预期的。如果我从项目根级别删除配置文件并将其放在 bin 目录中(即与包含自定义目标的程序集相同的级别),则加载的配置文件将无法找到自定义目标。

所以回顾一下,我停止将配置文件放在 bin 目录中,并将其留在定义的地方(项目根级别)

关于.net - nlog 无法从引用的程序集中加载自定义目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6307512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com