Visual Studio设置文件 - 它是如何工作的?

时间:2009-06-16 13:30:00

标签: .net visual-studio visual-studio-2008 settings

我不明白以下事项:

  1. app.config(applicationname.exe.config)和设置文件有什么区别?
  2. 我无法在特定帐户下的Windows7 AppData目录中找到* .settings文件(我听说它应该位于那边的某个地方)?
  3. 我们假设* .settings文件位于硬盘驱动器上的某个位置。为什么在开发时将设置文件中的数据复制到应用程序配置文件?
  4. 亲切的问候 PK

2 个答案:

答案 0 :(得分:5)

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

您执行的操作无法找到user.config文件,只有在您对默认值进行了更改后才会创建该文件。用户设置会覆盖存储在<exename>.config文件中的默认值。 如果未进行任何更改,则不存在任何用户配置文件。并且......一旦存在,您将注意到只有已更改的设置才会显示在user.config文件中

要测试这个...在您的设置文件中创建一个名为temp的虚拟变量。当您启动应用程序时:

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

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

以下是我编写的一些代码,用于帮助确定不同操作系统上各种SpecialFolders的位置。 (可能希望对log.Debug执行查找替换并替换为Console.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"

答案 1 :(得分:0)

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

  2. 尝试查看Local Settings [«用户名»\ Local Settings \ Application Data \«app name ...»]下的Application Data目录,而不是用户的直接Application Data目录[«username»\ Application数据]。

  3. 给定* .settings文件的app.config文件中的设置副本用于在第一次使用这些设置时对其进行初始化;包括添加新设置并且* .settings文件的先前副本尚未具有新设置的情况。

  4. 以下是C#中设置的简要介绍链接。

    Using Settings in C# (MSDN)