我注意到,如果您将该应用程序 .exe 文件移动到另一个位置,用户设置将重置。
据我了解,发生这种情况是因为应用程序数据文件夹中的位置也基于 .exe 的路径,在生成哈希时会考虑到这一点。
我知道有不同的替代方案,可以使用注册表或手动创建自定义配置文件,但我的问题是,当应用程序(.exe)移动到具有默认功能的另一个位置时是否可以保留用户设置微软提供?
对于我的测试,我使用一个独立的应用程序(仅一个 .exe 文件)。只需将文件移动到,比方说/Desktop/Test/
from /Desktop/
导致在下面生成一个新文件夹C:\Users\<user>\AppData\Local\<company>\Appname_Url_<hash>
其中包含默认的 user.config 。旧的 user.config 仍然可用,因此如果您将 .exe 文件移回其先前的位置,则先前的设置将再次加载。这会变得很麻烦,不仅因为您丢失了设置,而且如果您在 10 个不同位置移动文件 10 次,最终会在应用程序数据中产生 10 个新文件夹。
这实际上是一个安全功能,与程序集部署和 clickonce 相关。
我认为您只需要为主程序集添加一个强名称即可解决此问题。
如果您没有强名称,则名称将类似于以下内容,并且如果应用程序路径更改,名称也会更改(请参阅 Url 令牌):
%appdata%\WindowsFormsApplication1\WindowsFormsApplication1._Url_3pei3cdnq3srqpjiwh1qnf12ncsp5c2w\1.0.0.0\user.config
如果您有一个强名称,它将是这样的,并且不会改变,因为您的应用程序来源现在已被识别,无论其当前位置在哪里(请参阅 StrongName 令牌):
%appdata%\WindowsFormsApplication1\WindowsFormsApplication1._StrongName_fe0ndyau2vlgeac4gmbg13u3q4jtyrqv\1.0.0.0\user.config
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)