在VSIX扩展中使用的WPF-Log4Net在目标VS上安装时没有输出日志

Log4net在VSIX扩展中使用并在另一个目标VS上安装时不会记录。

我有一个WPF解决方案。 我下载了log4net dll,我添加了log4net.config并将“Copy to Output Directory”值设置为“Copy always”。

log4net.config:

        <!----> <!----> <!----> <!---->             

我在AssemblyInfo.cs中添加了以下行:

  [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 

然后是我的TestWindowControl.xaml.cs中的以下代码,并在VSPackage.cs中为此引用/创建了一个实例。

 public partial class TestWindowControl : UserControl { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); public TestWindowControl() { XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config")); log.Info("info testing"); log.Debug("debug testing"); log.Error("error testing"); log.Fatal("fatal testing"); log.Warn("warn testing"); } } 

当我在我的机器(本地)上运行它时,它按预期工作但我安装此扩展并尝试(服务器)log4net没有使用log4net.config中提到的任何位置进行日志记录 。 在网上搜索并尝试了不同的路径,但仍然没有记录。 我错过了什么吗?

在分析之后,问题是当在visual studio扩展中使用时,log4net没有记录。

这个post描述了解决方案

正如Gifty在评论中所写:

谢谢。 XmlConfigurator.Configure(new System.IO.FileInfo(“log4net.config”));

这一行是我的本地解决方案路径为log4net而不是扩展安装路径,所以我将该行更改为var log4netconfigpath = Directory.GetParent(Assembly.GetExecutingAssembly()。Location).FullName + @“\ log4net.config”;

并更改了log4net.config文件属性BuildAction-Content并包含在VSIX-true中,现在它按预期工作。 谢谢dsdel将我重定向到那篇post:)