c# - 使用 NSIS 部署 C# Winforms 应用程序时,如何使用 Properties.Settings?
问题描述
我已经使用 Winforms 编写了一个 C# 应用程序,并试图利用内置的 Properties.Settings(用户范围)来记住程序启动之间的用户状态。当通过 Visual Studio 的内置Build > Publish部署应用程序时,显然该文件被放入 Local Appdata 文件夹中。但是,我想使用 NSIS 来创建程序的可执行文件。我可以通过 NSIS 脚本将ProgramName.exe.config文件放入本地 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 中没有什么特别需要做的事情。
推荐阅读
- google-api - 剪辑时如何获取完整的 Gmail API 消息?
- javascript - 如何在云函数中从 Firebase 数据库中检索多个值?
- python - 是否可以在执行前知道变量是否会用 ast Python 更改?
- msys2 - Windows 剪贴板的 MSYS2 路径
- latex - (Jupyter Notebook, LaTeX) LaTeX pdf 编译错误 MiKTeX209-xetex.dlll not found
- android - 有人来电时收到通知
- python - 从系列创建一个 pd.Dataframe
- c++ - 如何在 Eigen 中有效地初始化 SparseVector
- liquibase - 在 Sybase ASE 上运行时如何防止 Liquibase 始终恢复为自动提交
- drag-and-drop - 将放置事件从 TinyMCE 编辑器传播到父元素