gpt4 book ai didi

.Net 用户范围应用程序设置文件路径问题

转载 作者:行者123 更新时间:2023-12-04 23:09:10 25 4
gpt4 key购买 nike

我正在使用 .Net Framework 3.5 及更高版本构建 Windows 窗体应用程序。我在使用用户范围内的应用程序设置时遇到问题。

当我第一次阅读用户范围应用程序设置时,我了解到我的应用程序会将设置与用户相关联。我还从 MSDN 了解到,设置将保留在路径下的 user.config 文件中: %LOCALAPPDATA%\CompanyName\ProductName\ProductVersion
这与字段 返回的完全相同的值Application.LocalUserAppDataPath
引用:http://msdn.microsoft.com/en-us/library/8eyb2ct1.aspx

这里的问题是,MSDN 中关于文件路径的所有内容都是完全错误的。并且实验清楚地表明文件路径实际上是: %LOCALAPPDATA%\companyname\appdomainname_eid_hash\verison

首先,我真的很想知道为什么这么重要的信息在 MSDN 中有错误的合理解释?

其次,这里的问题是我没有在 .Net 中使用部署方法(例如 Windows Installer 或 ClickOnce),我不打算使用它们,也不想使用它们。在这里,我只构建一个版本,他们将版本 exe 文件复制到主机。因为我没有使用安装程序,所以每次更改程序集(即 exe 文件)的位置时,.Net 框架都会将该程序集识别为不同的应用程序,并为其创建一个具有不同哈希和新 user.config 文件的新文件夹.这对我来说当然是一个问题,因为这意味着我正在考虑的不是“用户设置”,而是“用户和程序集设置”,这在逻辑上不适合我。我找不到用户可以将程序集重新定位到任何地方并且仍然可以访问相同设置文件的原因(正如 MSDN 错误地指出的那样!!)

此外,使用IsolatedStorage 时,我也面临同样的问题。同样在 IsolatedStorage 中,当程序集位于某个位置时,我存储的所有数据都完全无法访问,因为我重新定位 exe 文件的确切原因与应用程序设置问题中的确切原因相同。

我该如何解决这个问题,或者至少我可以知道带有散列的命名约定在.Net中的起源以及微软在决定相应地考虑exe重定位时可能做了什么推理?

最佳答案

我不知道为什么 MSDN 上的文档不正确,但您应该确保您查看的 .net 3.5 文档的正确版本位于 https://msdn.microsoft.com/en-us/library/8eyb2ct1(v=vs.90).aspx
另外,根据文档:

Settings File Locations

The location of the app.exe.config anduser.config files will differ based on how the application isinstalled. (my emphasis added)


应用程序设置过程与您正在绕过的部署紧密耦合。即使单击一次,某些部署策略也需要根据您的应用程序以编程方式获取以前的版本设置 ( https://msdn.microsoft.com/en-us/library/system.configuration.applicationsettingsbase.getpreviousversion(v=vs.90).aspx)
如果要求每次更新时都需要手动复制 .exe,那么滚动您自己的用户设置对象并使用序列化可能是更好的选择?然后,您可以将用户范围的设置存储在公共(public)位置,例如公共(public)应用程序文件夹,并在应用程序启动时根据用户反序列化用户设置。

关于.Net 用户范围应用程序设置文件路径问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13675445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com