我正在使用 .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 Framework 都会将该程序集识别为不同的应用程序并为其创建一个具有不同哈希的新文件夹和一个新的 user.config 文件。这对我来说当然是一个问题,因为这意味着我正在考虑的不是“用户设置”,而是“用户和程序集设置”,这在逻辑上不适合我。我找不到用户可以将程序集重新定位到任何地方并且仍然可以访问相同设置文件的原因(正如 MSDN 错误地指出的那样!!)
此外,使用IsolatedStorage 时,我也面临同样的问题。同样在IsolatedStorage中,当程序集位于某个位置时,我存储的所有数据都完全无法访问,因为我重新定位exe文件的确切原因与应用程序设置问题中的确切原因相同。
我该如何解决这个问题,或者至少我可以知道带有散列的命名约定在.Net中的起源以及微软在决定相应地考虑exe重定位时可能做了什么推理?