您好我使用Visual Studio配置文件,但每次移动exe时设置都会更改。
我该如何解决这个问题?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="GUIChangerUI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<userSettings>
<GUIChangerUI.Properties.Settings>
<setting name="StarmadePath" serializeAs="String">
<value>default</value>
</setting>
<setting name="GuiPath" serializeAs="String">
<value>Not selected yet.</value>
</setting>
<setting name="FirstStart" serializeAs="String">
<value>True</value>
</setting>
<setting name="jpeg" serializeAs="String">
<value>default</value>
</setting>
<setting name="debug" serializeAs="String">
<value>default</value>
</setting>
<setting name="Darktheme" serializeAs="String">
<value>False</value>
</setting>
<setting name="Lightheme" serializeAs="String">
<value>True</value>
</setting>
<setting name="starmadeStarter" serializeAs="String">
<value />
</setting>
<setting name="_starmadeStarter" serializeAs="String">
<value />
</setting>
<setting name="OSMTheme" serializeAs="String">
<value>False</value>
</setting>
</GUIChangerUI.Properties.Settings>
</userSettings>
</configuration>
答案 0 :(得分:4)
包含已保存配置设置的实际配置文件存储在此处:
%APPDATA%\Local\<application name>\<application name>.<eid>_<hash>\<version>
<eid>
是URL,StrongName或Path,基于可用于哈希的证据<hash>
是从CurrentDomain收集的证据的SHA1哈希值,按以下优先顺序排列:
强名称
URL
如果这些都不可用,请使用.exe路径。
(我的重点)
所以解决方案似乎很简单:
创建一个强名称并签署您的可执行文件。
然后,每次都会获得相同的唯一哈希值,并且只要从新位置启动可执行文件,它就不会更改。
如果您需要帮助签署您的申请,请参阅此MSDN文章:How to: Sign an Assembly with a Strong Name。
答案 1 :(得分:1)
这种行为是设计原因,因为您可能有多个版本的应用程序(例如QA版本,PROD版本等)需要不同的设置存储。有关详细信息,另请参阅Client Settings FAQ。
如果您需要一个独立于您应用的位置/版本的设置管理,我建议您创建自己的设置文件并将其存储在“%appdata%[company] [application]”
下面答案 2 :(得分:1)
用户设置将存储在用户的个人资料中,以便链接应用程序的位置。这就是为什么移动时应用程序不再找到设置的原因。
您可以尝试做的是:
SettingsUpgradeRequired
的新用户设置,并在Visual Studio的设置设计器中将其设置为true
。SettingsUpgradeRequired
是否为true
,如果是,请执行设置升级。由于新设置在重置设置文件后仅为真,因此以下内容应导入旧设置,并且只应执行一次:
if (Properties.Settings.Default.SettingsUpgradeRequired)
{
try
{
Properties.Settings.Default.Upgrade();
Properties.Settings.Default.SettingsUpgradeRequired = false;
Properties.Settings.Default.Save();
}
catch (...)
{
... // Upgrade failed - tell the user or whatever
}
}