我只想首先说,我做了很多研究,但找不到答案,所以发了这个帖子。
我正在将用户设置功能添加到我的应用程序中,该应用程序作为一个常见的现成建筑程序(称为Autodesk Revit(中的插件。主项目(我们称之为MainProj(有几个依赖项,包括一个处理日志记录和使用的项目(我们将其称为Loggers(。我在Loggers项目中创建了一个设置文件,目的是让用户在出现问题时将日志记录级别从"错误"更改为"调试",这样我就可以要求他们进行更改并将日志发送给我。
我面临的问题是,当我直接在配置文件中更改日志级别并从Revit中重新运行命令时,更改不会转换到日志中,就好像日志级别是在设计过程中以某种方式编译的,从未更改过一样。
事实上,我试图用一种更简单的方式重现这个问题,并创建了一个小控制台程序,但我也面临着同样的问题。以下是Loggers项目的代码。
namespace Loggers
{
public static class Logger
{
public static string RunMe()
{
if (Properties.Settings.Default.LogMode == "Debug") { return "DEBUG"; }
else return "NOTHING";
}
}
}
然后,我在配置文件中将LogMode属性从Debug更改为其他任何属性,但控制台继续返回Debug。
static void Main(string[] args)
{
Console.WriteLine(Logger.RunMe());
Console.Read();
}
我还尝试将设置从用户更改为应用程序,并在配置文件中编辑其值,然后重新运行该命令,但结果是一样的。
如有任何帮助,我们将不胜感激。我已经被这个问题困扰了一段时间。非常感谢。
感谢@BurnsBA,您共享的链接中有评论说user.config位于不同的文件夹中,只有用户更改设置才能创建它。这让我明白,手动编辑app.config并期望设置正常工作是没有意义的。
然后,我做了一些测试,创建了一个简单的表单,其中有一个链接到我想要更改的属性的复选框,在我调用Properties上的Save((方法后,user.config文件就直接创建了。
private void btnOK_Click(object sender, EventArgs e)
{
if (chkDebugMode.Checked == true)
Loggers.Properties.Settings.Default.LogMode = "Debug";
else Loggers.Properties.Settings.Default.LogMode = "Error";
Loggers.Properties.Settings.Default.Save();
Close();
}