C# C语言中的应用程序设置文件复杂性#

C# C语言中的应用程序设置文件复杂性#,c#,application-settings,C#,Application Settings,我在VS2008中由C#开发的服务应用程序中添加了一个设置文件。在设置文件的设计器中,我插入了带有user scope的新datetime变量,并为该datetime变量输入了默认值。例如,假设此变量的名称为MyDate,其值为“2013-01-08” 当我运行我的服务应用程序时,我使用以下代码行正确地获得MyDate的值: Datetime value = app.Default.MyDate; // app is the name of the settings file 之后,我用以下代

我在VS2008中由C#开发的服务应用程序中添加了一个设置文件。在设置文件的设计器中,我插入了带有
user scope
的新datetime变量,并为该datetime变量输入了默认值。例如,假设此变量的名称为
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();
直到现在一切都很好<代码>我的日期参数设置为我想要的。但是,我在
app.config
文件中看不到新值。在调试文件夹中打开配置文件时,我只看到:

    <setting name="MyDate" serializeAs="String">
        <value>2013-01-08</value>
    </setting>

2013-01-08
令人惊讶的是,当我重新运行应用程序时,
MyDate
参数似乎是“
2013-01-08 14:00:00
”insead of“
2013-01-08
”!我查看了调试文件夹和项目文件夹中的每个配置文件,但找不到任何带有“
2013-01-08 14:00:00
”的值。但是
MyDate
参数在启动时设置为该值
我想知道MyDate变量的值存储在哪里?我应该查找哪个文件?


解决方案编辑:我决定不使用设置文件。我将使用app.config文件插入设置文件以存储我的应用程序参数。app.config不是类型安全的,但更容易编辑参数infle。另一方面,设置文件就像一个封闭的盒子,您无法找到它存储参数值的文件。

这是因为它们存储在

\\\\\\\user.config
文件

例如:
C:\Users\\AppData\Local\\\\user.config
文件

根据您的代码,您可以使用:

var path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
获取本地应用程序数据的存储位置

[更新]

正如您提到的,它是Windows服务应用程序,请尝试搜索以下路径:


c:\windows\system32\config\systemprofile\AppData\Local\

具有用户范围的设置实际上并不存储在app.config中,而是存储在名为
user.config
的文件中。此文件的位置由
System.Windows.Forms.Application.LocalUserAppDataPath
属性确定。有关架构的更多详细信息

如果需要,也可以更改此位置,有关详细信息,请参阅

直到现在一切都很好。MyDate参数设置为我想要的。 但是,我在app.config文件中看不到新值

这里您对App.config文件有误解。app.config文件是您的解决方案文件,它是您编码/设计时间的一部分。在调试模式或发布模式下运行应用程序时,不应更改此设置。到底发生了什么。这个有你的默认设置。对于你的应用程序


假设您在调试模式下运行应用程序,这将在Bin/debug文件夹中生成输出,该文件夹应包含myapplication.exe.config。您需要查看此文件,而不是app.config。因此,您所做的任何更改都会被更改为myapplication.exe.config。文件不在app.config中

是否尝试将值写入配置文件?@BrettAllred我希望能够在配置文件中手动编辑变量的值。但是当我更改配置文件时,它不会影响变量值。此外,我在任何配置文件中都找不到变量的当前值。如何获取此文件路径。我不使用System.Windows.Form,因为我的应用程序是服务应用程序。@Fer Hmmm。。c:\windows\system32\config\systemprofile\AppData\Local\怎么样?它也不在那里。我开始搜索“user.config”。看来要花很长时间。顺便问一下,为什么不将此值存储在myapplication.exe.config文件中?@如果您的in-exe.config中的值实际上是默认值,以防您的设置文件丢失。我找不到C:\Users\\AppData\Local\\\\user.config文件路径。我查看了文档和设置文件夹“本地设置/应用程序数据”,但没有包含我的应用程序名称的文件。当您转到:
%APPDATA%
时,是否可以从项目中看到公司名称?我的服务应用程序的公司名称为空。[大会:大会公司(“”)。因此,我无法在%APPDATA%文件夹中看到我的公司名称。我应该怎么做才能看到该文件?只需忽略路径的
部分,使用
\\\\\\\\\\\\user.config
(即
C:\Users\\AppData\Local\\\\ user.config
)它也不在那里。我开始搜索文件。Windows正在搜索user.config文件。顺便问一下,为什么这个值不存储在myapplication.exe.config文件中?谢谢你的回答,但请注意,我也尝试过编辑myapplication.exe.config文件,它也不会更改变量的值。