我在VS2008中 C#开发的服务应用程序中添加了设置文件。在设置文件的设计器中,我插入了带有user scope
的新日期时间变量,并为该日期时间变量输入了默认值。例如,假设此变量的名称为MyDate
,其值为“2013-01-08
”。
当我运行我的服务应用程序时,我使用以下代码行正确获得MyDate
的值:
Datetime value = app.Default.MyDate; // app is the name of the settings file
之后,我使用以下代码行将MyDate
设置为“2013-01-08 14:00:00
”:
app.Default.MyDate = DateTime.Now; // Suppose Now is 2013-01-08 14:00:00 at that time.
app.Default.Save();
到目前为止,一切都还可以。 MyDate
参数设置为我想要的。但是,我无法在app.config
文件中看到新值。当我在Debug文件夹中打开配置文件时,我只看到:
<setting name="MyDate" serializeAs="String">
<value>2013-01-08</value>
</setting>
令人惊讶的是,当我重新运行该应用程序时,MyDate
参数似乎是“2013-01-08 14:00:00
”的“2013-01-08
”内容!我查看了Debug文件夹和项目文件夹中的每个配置文件,但我找不到“2013-01-08 14:00:00
”的任何值。但MyDate
参数在启动时设置为此值。
我想知道MyDate变量的值存储在哪里?我应该找哪个文件?
解决方案编辑:我决定不使用设置文件。我将使用app.config文件insead的设置文件来存储我的应用程序参数。 app.config不是类型安全的,但编辑infile参数更容易。另一方面,设置文件就像一个封闭的盒子,你找不到它存储参数值的文件。
答案 0 :(得分:1)
那是因为它们存储在
中 <Profile Directory>\<Company Name>\<App Name>_<Evidence Type>_<Evidence Hash>\<Version>\user.config
档案。
例如:C:\Users\<User>\AppData\Local\<Company>\<Product>\<Version>\user.config
文件。
从您的代码中,您可以使用:
var path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
获取本地应用程序数据的存储位置。
<强> [UPDATE] 强>
如您所说,它是Windows服务应用程序,请尝试搜索以下路径:
c:\windows\system32\config\systemprofile\AppData\Local\
答案 1 :(得分:1)
具有用户范围的设置实际上并未存储在您的app.config中,而是存储在名为user.config
的文件中。此文件的位置由System.Windows.Forms.Application.LocalUserAppDataPath
属性确定。 See here了解有关架构的更多详细信息。
如果您愿意,也可以更改此位置,有关详细信息,请参阅this answer。
答案 2 :(得分:0)
到目前为止,一切都还可以。 MyDate参数设置为我想要的。 但是,我无法在app.config文件中看到新值。
在这里,您正在使用App.config文件进行误解。 app.config文件是您的解决方案文件,它是您的编码/设计时间的一部分。在调试模式或发布模式下运行应用程序时,不应更改此项。究竟发生了什么。这个有你的默认设置。为您的应用程序。
假设您在调试模式下运行应用程序,这将生成Bin / Debug文件夹中的输出,该文件夹应该包含myapplication.exe.config。你需要看到这个文件而不是app.config。你所改变的内容将被更改为myapplication.exe.config。文件不在app.config中。