2011-09-06 73 views
3

我在我的项目中有一个设置,当从代码引用(即我悬停在对象上,我可以看到的值),是不一样的是在什么是在Properties.Settings文件。这是一个古老的价值。我可以转到设置编辑器并将值更新为其他值,但旧值仍然存在。 如果我使用.Properties.Settings.Default.Save()方法,则设置将会更改,但是当我停止调试时,该更改不会反映在编辑器中。 我可以在文本编辑器中打开Settings.settings文件,它将向我展示与VS中设置编辑器中的内容相同的内容。 我也可以搜索计算机以查找其他Settings.settings文件,只有一个显示出来(其他人出现,但它们显然是不相关的,有旧日期modifieds,不会有相同的设置名称。)Properties.Settings是不是我期望它的值

在哪里这个文件以及为什么这个值与我认为它应该是不同的?

编辑:

我无法得到,所以我创建了设置GUI界面新设置变量再次被同步了我原来的设置变量。它似乎正在通过适当的传播。所有的文件,大家都建议我看看有我想要我的设置变量的值,但是当我运行一个调试会话,看着同一个变量,这是我无法追查的一些旧值。

现在我回想起来,大约1.5个月前,我遇到了另一个变量的类似问题,但那次我并没有深入挖掘这个问题。我必须做同样的事情。制作一个新的类似命名的变量,删除旧的并移动一个。

编辑2:

更改设置变量名,让VS传播通过它自己的程序,变化似乎是一种硬重启的了。

+0

设置工作完美。你做错了什么。不可能说缺少细节。 –

+0

我同意...通常程序是对的,我错了。但我错在哪里。 – Brad

回答

7

您还未找到设置文件。它不是名为Setting.settings,这是一个项目文件。它被命名为 “user.config”,并存储在一个目录,像一个奇怪的名字:

C:\用户\ HPassant \应用程序数据\本地\ MyCompany的\
WindowsFormsApplication1._Url_ghbcotszbdzyqv2ovpc1keo1yctxkcw5 \ 1.0.0.0

其中“HPassant”是用户名,“MyCompany”是[AssemblyCompany]属性,“WindowsFormsApplication1”是项目名称,后跟各种值的散列,后跟[AssemblyVersion]。您可以使用Reflector或ILSpy查看算法,查看ClientConfigPaths类构造函数。

+0

所有这些不同的文件实例似乎不知何故不同步。我已将该项目复制到闪存驱动器中,以便我可以在其他地方处理该问题,这是在何时开始的,但是错误在原始文件中。我的复制方法是压缩它。没有拖放或任何可以取代原始文件的东西... – Brad

+0

您不会以这种方式复制user.config文件。无论您将其复制到哪台机器,都将在没有user.config文件的情况下开始运行该程序。让机器之间的设置不同步几乎得到保证。相应地编码。 –

+0

本课学习困难。有没有办法轻松地将项目移到另一台计算机上以避免将来出现这种情况? (虽然我在复制的文件上遇到这个错误,但原始问题基于原始未复制文件) – Brad

3

默认的Properties.Settings值被app.config中的值覆盖。

如果部署的应用程序app.config被重命名为YourApplicationName.exe.config并且是处理应用程序参数配置的推荐方式。

+0

我现在看到这个文件。所以我猜他们已经不同步了。如何获取我的用户设置的所有这些版本以进行备份同步。我还没有发布该程序,但顺便说一句。 – Brad

1

当您保存设置时,设置将保存到YourApplicationName.exe.config,如@Albin Sunnanbo解释的。

所以,当你调用Settings.Default.Save()你正在改变这个文件,而不是你的项目中的app.config。你的二进制文件不知道app.config,他们只关心已部署的副本。

设置变量有多个作用域。如果将范围设置为“应用程序”,则只会有一个此实例的“实例”。如果您将其设置为用户,则每个独特的Windows用户都将拥有自己的设置副本。

您在app.config/Properties.Settings中提供的值是默认值值。调用Settings.Default.Save()时,它们将在YourApplicationName.exe.config中被覆盖。

调试时,您会在/ bin/debug文件夹中找到YourApplicationName.exe.config。看那里,你会看到你的应用程序中的值与这个文件中的值相同,而不是app.config中的值。

+0

\ bin \ Debug \ YourApplicationName.exe.config,app.config和settings.settings都表示同样的事情(以及我希望他们说的事情),但这不是应用程序运行时输出的内容。看到我原来的编辑。 – Brad

2

我改变了设置范围从用户到应用程序,解决了我的问题。

相关问题