【问题标题】:The type of namespace 'Logging' does not exist in the namespace 'Sitecore'命名空间“Sitecore”中不存在命名空间“Logging”的类型
【发布时间】:2017-05-30 14:27:45
【问题描述】:

在项目中添加了 Sitecore.Logging dll(来自 nuget),但我仍然收到错误。

在我添加 log4net dll(作为其他一些 nuget 依赖项的一部分)之前,它工作正常。在此之后有一个模棱两可的参考错误。然后,当我尝试指定 Sitecore.Logging.LogManager/Sitecore.Logging.ILog 时出现错误。

命名空间“Sitecore”中不存在命名空间“Logging”的类型

【问题讨论】:

  • Sitecore 版本?
  • 8.2.3 版本

标签: sitecore


【解决方案1】:

Sitecore.Logging.dll 不包含 Sitecore.Logging 命名空间中的类,尽管您可能会认为是这种情况 - 这当然是惯例。

用反编译器打开它会发现隐藏在其中的 log4net 的分叉版本。

您可能正在Sitecore.Kernel.dllSitecore.Diagnostics.Log 中寻找日志工厂

【讨论】:

  • LogManager 和 ILog 根据编译时错误消息不明确。必须删除新添加的 log4net 才能正常工作。 log4net 和 Sitecore.Logging 不能同时存在,对吧?还有哪个 dll 在 Sitecore.Logging 中包含命名空间?
  • Sitecore.Logging.dll 包含所有 log4net 功能。无需添加单独的log4net.dll。此外,命名空间 Sitecore.Logging 中没有类
  • 当然没有必要。我也不会添加它。但是一个 nugetpackage 正在带来它。它就在那里。现在,如何应对,是摆在我面前的问题。
  • 从你的 nuGet 包文件中删除它
【解决方案2】:

右键单击新添加的log4net dll -> 属性-> 别名-> 给一个不同的名称,如'log'。这将解决代码中的歧义。

【讨论】:

  • 好吧,是的,log4net 可能是通过依赖项进入的——我没有想到这一点。在这种情况下@BlueClouds 是完全正确的,您可以在解决方案资源管理器中的程序集引用上设置一个别名,通常是global,但可以是任何东西,因此使用上面的示例,您最终会得到不同的全局限定名称global::log4net.LogManager(将是 Sitecore.Logging.dll 之一)和 log::log4net.LogManager(log4net.dll 之一)
猜你喜欢
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 2018-08-01
  • 2020-05-31
相关资源
最近更新 更多