簡體   English   中英

在.NET中使用Settings.settings文件時,實際存儲的配置在哪里?

[英]When using a Settings.settings file in .NET, where is the config actually stored?

在.NET中使用Settings.settings文件時,實際存儲的配置在哪里? 我想刪除保存的設置以恢復默認狀態,但找不到存儲的位置...任何想法?

這取決於您選擇的設置是“用戶”范圍還是“應用程序”范圍。

用戶范圍

用戶范圍設置存儲在

C:\Documents and Settings\ username \Local Settings\Application Data\ ApplicationName

您可以在運行時讀/寫它們。

對於Vista和Windows 7,文件夾是

C:\Users\ username \AppData\Local\ ApplicationName

要么

C:\Users\ username \AppData\Roaming\ ApplicationName

適用范圍

應用程序范圍設置保存在AppName.exe.config並且它們在運行時是只讀的。

以下是可用於以編程方式獲取user.config文件位置的代碼段:

public static string GetDefaultExeConfigPath(ConfigurationUserLevel userLevel)
{
  try
  {
    var UserConfig = ConfigurationManager.OpenExeConfiguration(userLevel);
    return UserConfig.FilePath;
  }
  catch (ConfigurationException e)
  {
    return e.Filename;
  }
}

ApplicationSettings(即settings.settings)默認使用PerUserRoamingAndLocal進行用戶設置(我記得)。

更新:奇怪,但這里有太多不正確的答案。 如果您正在尋找用戶范圍的設置文件(user.config),它將位於以下文件夾中(對於Windows XP):

C:\\ Documents and Settings \\(用戶名)\\ Local Settings \\ Application Data \\(company-name-if-exists)\\(app-name).exe_(Url | StrongName)_(hash)\\(app-version)\\

Url或StrongName取決於您是否具有應用程序集強名稱。

假設您在談論桌面而不是Web應用程序:

向項目添加設置時,VS會在項目目錄中創建名為app.config的文件,並將設置存儲在該文件中。 它還構建了Settings.cs文件,該文件為各個設置提供靜態訪問器。

在編譯時,VS將(默認情況下;您可以更改此)將app.config復制到構建目錄,更改其名稱以匹配可執行文件(例如,如果您的可執行文件名為foo.exe ,則該文件將命名為foo.exe.config ),這是.NET配置管理器在運行時檢索設置時查找的名稱。

如果您通過VS設置編輯器更改設置,它將同時更新app.configSettings.cs (如果查看Settings.cs生成的代碼中的屬性訪問器,您將看到它們標有包含app.config文件中設置的默認值的屬性。)如果更改設置通過直接編輯app.config文件, Settings.cs將不會更新,但是當您運行它時,程序仍將使用新值,因為app.config在編譯時被復制到foo.exe.config 如果將其關閉(通過設置文件的屬性),則可以通過直接編輯構建目錄中的foo.exe.config文件來更改設置。

然后是用戶范圍的設置。

應用程序范圍設置是只讀的。 您的程序可以修改和保存用戶范圍設置,從而允許每個用戶擁有自己的設置。 這些設置不存儲在foo.exe.config文件中(因為在Vista下,至少程序無法在沒有提升的情況下寫入Program Files任何子目錄); 它們存儲在用戶應用程序數據目錄的配置文件中。

該文件的路徑是%appdata%\\%publisher_name%\\%program_name%\\%version%\\user.config ,例如C:\\Users\\My Name\\AppData\\Local\\My_Company\\My_Program.exe\\1.0.0\\user.config 請注意,如果您為程序指定了強名稱,則強名稱將附加到此路徑中的程序名稱。

在瀏覽以找出文件夾名稱中的哈希時,我遇到了(通過這個答案 ):

http://blogs.msdn.com/b/rprabhu/archive/2005/06/29/433979.aspx

(編輯:Wayback Machine鏈接: https ://web.archive.org/web/20160307233557/http://blogs.msdn.com:80/b/rprabhu/archive/2005/06/29/433979.aspx)

user.config文件的確切路徑如下所示:

<Profile Directory>\\<Company Name>\\<App Name>_<Evidence Type>_<Evidence Hash>\\<Version>\\user.config

哪里

<Profile Directory> - 是漫游配置文件目錄或本地目錄。 默認情況下,設置存儲在本地user.config文件中。 要存儲設置在漫游user.config文件,你需要標記與設置SettingsManageabilityAttributeSettingsManageability設置為Roaming

<Company Name> - 通常是AssemblyCompanyAttribute指定的字符串(需要注意的是,字符串必要時會被轉義和截斷,如果未在程序集中指定,則我們有一個回退過程)。

<App Name> - 通常是AssemblyProductAttribute指定的字符串(與公司名稱相同的警告)。

<Evidence Type><Evidence Hash> - 從應用程序域證據派生的信息,以提供適當的應用程序域和程序集隔離。

<Version> - 通常是AssemblyVersionAttribute指定的版本。 這需要隔離並排部署的不同版本的應用程序。

文件名始終只是' user.config '。

嗯,你能不能只使用Settings.Default.Reset()來恢復你的默認設置?

它位於用戶主文件夾中的應用程序數據文件夾中的應用程序名稱的文件夾中(xp上為C:\\ documents和settings \\ user,Windows Vista上為c:\\ users \\ user)。

這里也有一些信息。

PS: - 嘗試通過%appdata%在運行框中訪問它!

您的所有設置都存儲在相應的.config文件中。

.settings文件只為一組屬於一起的設置提供強類型類,但實際設置存儲在app.config或應用程序中的.config文件中。

如果添加.settings文件,則會自動添加app.config以容納設置(如果您還沒有)。

如果您的設置文件位於Web應用程序中,它們將位於web.config文件中(位於項目下方。如果它們位於任何其他類型的項目中,它們將位於app.config文件中(也位於項目下方) 。

編輯

正如評論中指出的那樣:您的設計時應用程序設置位於app.config文件中,適用於Web應用程序以外的應用程序。 構建時,app.config文件將復制到輸出目錄,並將命名為yourexename .exe.config。 在運行時,只會讀取名為yourexename.exe.config的文件。

兩個文件:1)app.config或web.config文件。 使用文本編輯器構建后可以自定義設置。 2)settings.designer.cs文件。 此文件具有自動生成的代碼以從配置文件加載設置,但如果配置文件沒有特定設置,則還會出現默認值。

我知道它已經回答了,但你不能只是同步設置設計器中的設置以恢復到默認設置嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM