2009-06-16 53 views
6

我不明白下面的事情:Visual Studio设置文件 - 它是如何工作的?

  1. 是什么的app.config(applicationname.exe.config),并设置文件之间的区别?
  2. 我无法找到特定帐户下在Windows7 AppData目录的* .settings文件(我听说它应该位于某处那边)?
  3. 让我们假设* .settings文件在硬盘上的某个地方。为什么在开发时将设置文件中的数据复制到应用程序配置文件?

亲切的问候 PK

回答

0
  1. app.config文件表示设置固有的应用程序,并且将应用到应用程序的所有会议。 * .settings文件通常用于特定用户使用应用程序的特定设置。

  2. 尝试在本地设置[«用户名»\本地设置\应用程序数据\«应用程序名称...»]下的应用程序数据目录中查找,而不是用户的直接应用程序数据目录[«username»\ Application Data ]。

  3. 的设置在一个给定* .settings文件app.config文件副本用于初始化它的第一次使用这些设置;包括添加新设置并且* .settings文件的先前副本还没有新设置的情况。

这里是一个链接,简要介绍C#中的设置。

Using Settings in C# (MSDN)

+0

的问题是,设置文件不存在。在下列位置没有应用程序目录:«用户名»\ Local Settings \ Application Data \:/我正在使用Windows 7. – pkolodziej 2009-06-16 16:28:44

+0

尝试使用«用户名»\ AppData \ Local。该文件夹可能隐藏,但应该存在。您可以在资源管理器视图中取消隐藏项目。 – meklarian 2009-06-16 17:01:36

5

所以默认设置存储在位于同一目录中的可执行文件<exename>.config

你找不到user.config文件的原因是,如果你已经更改了默认它只是创建。用户设置将覆盖存储在<exename>.config文件中的默认值。 如果没有更改,则不存在用户配置文件。而且......一旦它确实存在,您会注意到只有已更改的设置才会显示在user.config文件中。

为了测试这个......创建一个名为就像在你设置文件的临时虚拟变量。当你启动应用程序做:

Settings1.Default.temp = Settings1.Default.temp + 1; 
Settings1.Default.Save(); 

现在,您将有一个名为user.config在用户的ApplicationData文件夹,它在Vista中创建:C:\Users\<username>\AppData\Local\<company>\<productname>

下面是一些代码,我写来帮助识别凡在不同操作系统上的各种SpecialFolder。(可能想要做一个查找替换为log.DebugConsole.WriteLine替换)

log.Debug("SpecialFolder.ApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); 
log.Debug("SpecialFolder.CommonApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)); 
log.Debug("SpecialFolder.ProgramFiles: " + Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)); 
log.Debug("SpecialFolder.CommonProgramFiles: " + Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles)); 
log.Debug("SpecialFolder.DesktopDirectory: " + Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)); 
log.Debug("SpecialFolder.LocalApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)); 
log.Debug("SpecialFolder.MyDocuments: " + Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); 
log.Debug("SpecialFolder.System: " + Environment.GetFolderPath(Environment.SpecialFolder.System)); 

输出在Windows Server 2003:

SpecialFolder.ApplicationData: "C:\Documents and Settings\blake\Application Data" 
SpecialFolder.CommonApplicationData: "C:\Documents and Settings\All Users\Application Data" 
SpecialFolder.ProgramFiles: "C:\Program Files" 
SpecialFolder.CommonProgramFiles: "C:\Program Files\Common Files" 
SpecialFolder.DesktopDirectory: "C:\Documents and Settings\blake\Desktop" 
SpecialFolder.LocalApplicationData: "C:\Documents and Settings\blake\Local Settings\Application Data" 
SpecialFolder.MyDocuments: "C:\Documents and Settings\blake\My Documents" 
SpecialFolder.System: "C:\WINDOWS\system32" 

输出在Vista上:

SpecialFolder.ApplicationData: "C:\Users\blake\AppData\Roaming" 
SpecialFolder.CommonApplicationData: "C:\ProgramData" 
SpecialFolder.ProgramFiles: "C:\Program Files" 
SpecialFolder.CommonProgramFiles: "C:\Program Files\Common Files" 
SpecialFolder.DesktopDirectory: "C:\Users\blake\Desktop" 
SpecialFolder.LocalApplicationData: "C:\Users\blake\AppData\Local" 
SpecialFolder.MyDocuments: "C:\Users\blake\Documents" 
SpecialFolder.System: "C:\Windows\system32" 
相关问题