我正在尝试自定义user.config文件的位置.目前,它存储了哈希和版本号
%AppData%\[CompanyName]\[ExeName]_Url_[some_hash]\[Version]\
Run Code Online (Sandbox Code Playgroud)
我希望它与应用程序的版本无关
%AppData%\[CompanyName]\[ProductName]\
Run Code Online (Sandbox Code Playgroud)
可以这样做,怎么做?有什么影响?升级后,用户是否会丢失先前版本的设置?
我很惊讶Visual Studio中这两种机制的明显冗余来存储和管理桌面应用程序设置:
app.config文件,向该<appSettings>部分添加项目.可以使用ConfigurationManager类从代码中检索这些内容.Settings类,用于在运行时对类型安全的设置检索.这两种机制似乎服务于相同(或几乎相同)的目的.我知道存在一些差异,但我也对重叠及其后果感到困惑.例如,当我使用Visual Studio向Settings.settings文件添加设置时,我输入的所有信息也最终作为app.config文件中的条目.显然,存在同步机制:如果我更改了app.config文件中的设置,Visual Studio会在Settings.settings下次在编辑器中打开时提示我更新文件.
我的问题是:
app.configover 的最常见方案是什么Settings.settings,反之亦然?Settings.settings并且在app.config部署后更改了值,会发生什么?Settings.settings由于已经编译和分发,因此不会发生同步.注意.我已经搜索了关于这个主题的问题,但我更加困惑.例如,这里对这个问题的答案是相当矛盾的,并没有说清楚.
注意2.我知道这app.config是一个设计时文件名,我熟悉Visual Studio复制的动态并将其重命名为可执行文件夹.
当我使用代码
Properties.Settings.Default.Save();
Run Code Online (Sandbox Code Playgroud)
为了保存我的设置,它将文件写入该路径
%USERPROFILE%\AppData\Local\MyAppName\MyAppName.exe_Url_SomeWiredCode\TheAppVersionNumber\user.config
Run Code Online (Sandbox Code Playgroud)
喜欢
"C:\Users\Username\AppData\Local\MyApp\MyApp.exe_Url_claumreyuxtgqul2vuc3couyu5tso2n0\1.0.0.0\user.config"
Run Code Online (Sandbox Code Playgroud)
如何获取“应用程序版本”文件夹的路径,以便我可以向其中写入其他内容?
我正在使用 .Net Framework 4.6.2 和 Visual Studio 2017。