【问题标题】:Project Reference which has Multiple DLL itself具有多个 DLL 本身的项目参考
【发布时间】:2019-05-31 04:55:05
【问题描述】:

我有一个问题...

我有一个具有异常日志记录机制的类库项目。为了在数据库和文件中记录异常,我使用 NLog。

我想以这样一种方式实现这个异常类库项目,以便将来可以将它的 DLL 文件用于任何项目。

问题是当我将此 DLL 引用到其他项目时,它也在寻找 NLog dll。因此得到像

这样的错误

[无法加载文件或程序集 'NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c' 或其依赖项之一。系统找不到指定的文件。']

但是当我将 dll 添加到我当前的调用项目中时,一切都开始工作,这意味着很明显它也在寻找 NLOG DLL。

但如果我要同时添加 DLL(Nlog、ClassLibrary DLL 到调用项目),那将是完全可悲的。

请提出您对此的看法。

请找到我的解决方案的附加屏幕截图。

例外是这样的:

【问题讨论】:

  • But it will be completely pathetic if I am going to add both DLL 是强词。这是 nugets 的一种非常常见的情况,是的,有一些方法可以解决它,但是你会发现这些更麻烦,然后它们在更大的项目中是值得的
  • 那么您有什么建议我应该将 DLL 添加到主类库项目和异常类库项目中?
  • 是的,这是 IMO 通常做的事情。你可以想象各种各样的问题(否则),而 nugets 会比它们已经更麻烦

标签: c# .net visual-studio nlog class-library


【解决方案1】:

仅当该项目编写唯一的日志消息时,才需要引用 NLog 的类库。

我做了一个例子来证明它有效:

https://github.com/304NotModified/NLog-Demo-cases/tree/master/ConsoleWithClassLib

编辑:

添加了第二个演示,在这种情况下,NLog 由类库配置。在这种情况下,在记录之前配置 NLog 很重要 ;)

库中的相关部分:

// setup config
var configuration = new LoggingConfiguration();
configuration.AddRuleForAllLevels(new ConsoleTarget());
LogManager.Configuration = configuration;

// log
Logger logger = LogManager.GetCurrentClassLogger();
logger.Info("Init class1");

完整演示:https://github.com/304NotModified/NLog-Demo-cases/tree/master/ConsoleWithClassLib2

【讨论】:

  • 您已经在控制台应用程序中添加了 nlog.config 文件...但是我不希望对我的调用类有任何依赖... 就拿它来说吧,因为我现在已经在类库项目中实现了 nlog我想在不共享代码的情况下将我的类库 dll 文件分享给其他人,这样他们就不用担心 nlog 配置和所有......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 2016-08-19
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多