C# .net设置(WinForms或WPF),在重新编译后何时重置为默认设置?

C# .net设置(WinForms或WPF),在重新编译后何时重置为默认设置?,c#,wpf,winforms,visual-studio-2012,C#,Wpf,Winforms,Visual Studio 2012,我在设置(user.config)中为一些用户数据使用了一个可序列化(我们称之为Gs)类。然而,有时当我在VS2012中重新编译我的应用程序时,设置消失了,这意味着重置为默认值(基本上是所用类的构造函数中设置的默认值)。在其他情况下,它们持续存在 实际上我想知道这是什么时候发生的。首先我想,每当我改变Gs。但这是不正确的,有时我对类做了一些更改,但在运行应用程序进行测试时,更改的值仍保持以前存储的状态 另一方面,这些值被重置,没有改变Gs。下一个理论是每当我更改项目的版本号时。user.conf

我在设置(
user.config
)中为一些用户数据使用了一个可序列化(我们称之为
Gs
)类。然而,有时当我在VS2012中重新编译我的应用程序时,设置消失了,这意味着重置为默认值(基本上是所用类的构造函数中设置的默认值)。在其他情况下,它们持续存在

实际上我想知道这是什么时候发生的。首先我想,每当我改变
Gs
。但这是不正确的,有时我对类做了一些更改,但在运行应用程序进行测试时,更改的值仍保持以前存储的状态

另一方面,这些值被重置,没有改变
Gs
。下一个理论是每当我更改项目的版本号时。
user.config
的路径包含版本号。这可能是原因吗?但对于ClickOnce应用程序,更改版本号不会影响设置。有时,在不更改版本号的情况下重置值

所以当磁盘上的序列化值被清除,并且更改没有影响时,规则是什么。我猜这是一个组合,更改了版本号
其他原因


发生这种情况时,您是否添加/更改了任何设置字段(而不是值)?我可以部分回答这个问题。有时我会这样做——我理解在这种情况下反序列化失败的原因。但是(这是从内存中获得的,所以不是100%确定的)有时我似乎只“丢失”了那个特定的值,而且在某些情况下,这些值根本没有更改类,也没有应用新的版本号霍斯特·沃尔特18小时前