我已经移植了一些代码来使用NLog,到目前为止这很好。但是,我在以下代码中遇到了编译器错误:
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
private class SomeClass
错误是:
错误96类型'JetBrains.Annotations.UsedImplicitlyAttribute' 存在于两者中 'C:\代码\包\ Twia.ReSharper.1.1.0 \ LIB \ net40 \ JetBrains.Annotations.dll' 和'c:\ Code \ packages \ NLog.3.0.0.0 \ lib \ net45 \ NLog.dll'
果然,NLog.dll包含一个JetBrains.Annotations.UsedImplicitlyAttribute类:
当然,我无法控制其中任何一个的源代码。为什么NLog在这个世界中拥有自己的副本?他们是否将JetBrains代码ILMerge到程序集中?实施是否相同?我现在可以安全删除对JetBrains.Annotations.dll
的引用并让所有内容都一样吗?是否有工作来引用两个程序集而没有编译器错误?谢谢!
答案 0 :(得分:2)
看起来这是/ known issue。
8小时前的好消息fixed。坏消息是,现在我将不得不等待NLog的下一个版本,因为我不想从源代码构建。
<强>更新强>
我等到下一个版本时发现了一个临时修复程序。在Visual Studio中,找到项目中的 NLog 引用:
右键单击,选择属性。然后,将别名值从全局更改为其他内容,例如 NLog :
这将使冲突消失。但是,当您想要从该程序集中引用任何时,您必须完全符合以下条件:
extern alias NLog;
添加到.cs文件的最顶层(在任何using
个关键字之前)并且...... NLog::
作为命名空间的前缀,例如: public class Logger : NLog::NLog.LogReceiverService.ILogReceiverServer
仍然想知道NLog的人在考虑将第三方命名空间放入他们的程序集并将其公之于众。