问题描述
我已经使用Winforms编写了一个C#应用,并试图利用内置的Properties.Settings(用户作用域)来记住程序启动之间的用户状态。 通过Visual Studio的内置 Build > Publish 部署应用程序时,显然此文件将放入Local Appdata文件夹中。 但是,我想使用NSIS创建程序的可执行文件。我可以通过NSIS脚本将 ProgramName.exe.config 文件放入Local AppData中,但是我的应用似乎无法读取。没有任何用户设置会持续存在。
这甚至可能吗?还是应该使用自己的方法(数据库或编写自己的设置xml)来存储用户设置?
解决方法
好的,我知道它可以与NSIS一起使用。 App.config文件具有一个名为“复制到输出目录”的属性,默认情况下该属性设置为“不复制”。我在这里找到此信息:https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/
在@Jimi的帮助下,通过添加System.Configuration作为参考,然后使用以下命令获取路径,我发现了要在哪里创建user.config文件:
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
不是在应用程序安装时创建user.config文件,而是在第一次调用以下文件时创建该文件:
Properties.Settings.Default.Save();
在NSIS中,开发人员无需执行任何特殊操作。