1

我在 VS2008 中由 C# 开发的服务应用程序中添加了一个设置文件。在设置文件的设计器中,我插入了新的日期时间变量并输入了该日期时间变量的默认值。例如,假设这个变量的名字是,它的值是“ ”。当我运行我的服务应用程序时,我使用以下代码行正确地 获得了值:user scopeMyDate2013-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 文件而不是设置文件来存储我的应用程序参数。app.config 不是类型安全的,但在文件中编辑参数更容易。另一方面,设置文件就像一个封闭的盒子,你找不到它存储参数值的文件。

4

3 回答 3

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);

获取本地应用程序数据的存储位置。

[更新]

如您所述,它是一个 Windows 服务应用程序,请尝试搜索以下路径:

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

于 2013-01-08T14:04:54.170 回答
1

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

您也可以根据需要更改此位置,有关更多详细信息,请参阅此答案

于 2013-01-08T14:05:40.053 回答
0

到目前为止一切正常。MyDate 参数设置为我想要的。但是,我在 app.config 文件中看不到新值。

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

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

于 2013-01-08T14:07:49.267 回答