我正在努力弄清楚我的设置在哪里。我保留了一个我无法在任何地方找到的连接字符串。到目前为止,我了解到AppName.vshost.exe.config应该是调试版本,而AppName.exe.config应该是发行版,但事实并非如此,或者如果是,那么它们就不会发送到默认文件夹也不是我选择的文件夹。我不知道我做错了什么或这是微软的“功能”,但如果有人有线索请填写我。
我正在使用VS 2015在Win 7机器上进行开发。我的构建 - 配置是“活动(调试)”,我已将输出路径设置为“C:\ Bin”,因为我有其他正在构建的库这个应用程序需要它,并且更容易将所有输出路径设置到同一个地方。
我还在表单中添加了一个文本框,并按如下方式使用:
public Main()
{
...
textBox1.Text = Settings.Default.Test;
...
}
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
...
Settings.Default.Test = textBox1.Text;
...
}
然后我编译并将exe和所需的dll从C:\ Bin复制到C:\ Test。该目录中没有任何配置文件。
表单在文本框中显示“T”。到现在为止还挺好。然后我将其更改为“EXE-Test”:
我关闭它并重新打开它,我的变化就在那里。但是它去哪儿了?在我运行它的文件夹中没有创建配置文件,就像我期望的那样。 SQLgem.vshost.exe.config和SQLgem.exe.config文件在我的输出文件夹(C:\ Bin)中都包含原始“T”。
C:\ Code \ SQLgem \ SQLgem \ bin \ Release中没有任何内容,这是我预期的,因为我没有构建版本。 C:\ Code \ SQLgem \ SQLgem \ bin \ Debug只有shell,新设置(实际上是我的所有设置)都不会出现在那里。
它变得更奇怪了。当我在debug(visual studio)中运行并更改“T”以进行调试时,它仍然存在。那么这个去哪了?
所以现在有两个设置仍然存在,但我找不到任何地方。做C:> dir SQLgem.exe.config / s找不到我已提到的那些。
他们在哪里?
不知何故,“惠普公司”成为了嵌入式信息公司。因此,当我关注第一篇文章并检查两个位置时,我本能地忽略了不属于我公司的文件夹。经过调查,我终于找到了他们!
答案 0 :(得分:1)
这些是用户范围设置,而不是应用程序范围,因此它们不会被持久化回bin目录中的app.exe.config
(通常为C:\Program Files
且用户无法写入)。
在%LOCALAPPDATA%( 用户可写)下的某处,您将找到存储在名为user.config
的文件中的设置。
此文件所在的目录受程序集元数据的影响,例如公司名称和产品名称及版本。