C# 无法发布使用NLog进行NuGet的库
我正在尝试使用NuGet Package Explorer将一个C#库发布到NuGet。该库使用NLog进行日志记录。我的本地版本按预期工作 我可以成功地上传并下载库,但是当我尝试使用从NuGet下载的版本时,我会得到一个C# 无法发布使用NLog进行NuGet的库,c#,.net,nuget,nlog,C#,.net,Nuget,Nlog,我正在尝试使用NuGet Package Explorer将一个C#库发布到NuGet。该库使用NLog进行日志记录。我的本地版本按预期工作 我可以成功地上传并下载库,但是当我尝试使用从NuGet下载的版本时,我会得到一个NullReferenceException。进一步的实验表明,这是由LogManager.Configuration为null引起的 这里是我尝试使用LogManager的地方。配置 var logger = LogManager.GetLogger("MyLibraryNa
NullReferenceException
。进一步的实验表明,这是由LogManager.Configuration
为null
引起的
这里是我尝试使用LogManager的地方。配置
var logger = LogManager.GetLogger("MyLibraryName");
var logTarget = new ColoredConsoleTarget();
var loggingRule = new LoggingRule("*", LogLevel.Info, logTarget);
logTarget.Layout = "${longdate} ${level} ${logger}: ${message} ${exception:format=tostring}";
LogManager.Configuration.LoggingRules.Add(loggingRule); // exception thrown here
我的NLog.config文件似乎被本地版本的库自动使用,而不是被下载版本使用
在NuGet Package Explorer中,我的“包内容”如下所示:
- lib
- net45
- NLog.config
- MyLibrary.dll
我已尝试按照NLog wiki()上的建议,将NLog.config重命名为NLog.dll.NLog。这并没有解决问题
如何阻止LogManager.Configuration为空?首先,NLog只查看app.config中的设置。它不会查找以DLL命名的.config文件。(编辑:这是.NET应用程序的默认行为,但您引用的wiki指定了其他行为——我将说明它们是否仍然支持该行为,但我会说我在下面提供的解决方案应该始终有效) 其次,当您应该向包中添加对NLog的依赖时,您正在向包中添加物理文件 要修复第一部分,您必须在包中指定一些配置文件转换。文件。只需创建一个裸app.config文件,将其重命名为app.config.transform,然后将所有NLog特定部分添加到此文件。将其包含在包的内容中 要修复第二部分,请从内容中删除NLog dll。在包的元数据中,添加NLog的依赖项。您可以通过编辑XML来手动添加它
或者使用NuGet软件包浏览器编辑软件包(更简单、更安全)。更多信息。您是否将nlog.config文件包括在nuget清单中?