我正在開發一個在 Visual Studio v.2022 中運行良好的 WPF 應用程式。我的問題是當我將應用程式部署到另一臺計算機進行測驗時,它似乎沒有更新 app.config 資料。當我將它更改ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)為 NONE 時,它在 Visual Studio 中的除錯和發布模式下都能正常作業,但在部署到另一臺計算機時會引發錯誤。我得到的錯誤是“系統配置。配置錯誤例外 - 加載組態檔 myApp.dll.config 時發生錯誤。訪問被拒絕”
我收集到用戶對存盤 app.config 的 Program Files 檔案夾沒有寫權限。但是,當我將用戶級別更改為漫游或漫游和本地時,沒有任何反應,因為沒有找到組態檔,并且如果進行了所有更改,那么它們就不會持續存在。這是我的 app.config 檔案
<configuration>
<appSettings>
<add key="Server" value=""/>
<add key="Port" value=""/>
<add key="Database" value=""/>
<add key="User" value=""/>
<add key="Pwd" value=""/>
<add key="Code" value=""/>
<add key="Access" value=""/>
<add key="Status" value=""/>
<add key="EndDate" value=""/>
</appSettings>
</configuration>
這是我更新 app.config 的方法
public static void UpdateSetting(string key, string value)
{
Configuration roaming = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = roaming.FilePath;
Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
var appSettings = configuration.AppSettings;
foreach (var keys in appSettings.Settings.AllKeys.Where(x => x.StartsWith(key)))
{
appSettings.Settings[keys].Value = value;
}
configuration.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
這是如何呼叫該方法的示例 Settings.UpdateSetting("Code", _Code);
任何幫助都感激不盡
uj5u.com熱心網友回復:
在@Joe 的評論之后,我想到在運行時無法寫入配置應用程式資料。我選擇在我的解決方案的 Properties.Settings 檔案夾中的組態檔中創建一個新部分,并將范圍分配給用戶而不是應用程式,因為用戶能夠在運行時更新資料。雙擊 settings.Settings 檔案以在設計器視圖中打開并逐字輸入要存盤的設定名稱。可以使用以下方法保存和檢索存盤的設定。Properties.Settings.Default.yourSetting.獲取設定。
并存盤/保存設定
Properties.Settings.Default.yourSetting= val;`
Properties.Settings.Default.Save();`
這解決了我的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/513333.html
標籤:C#wpf实体
上一篇:List的wpf應用中的INotifyPropertyChanged
下一篇:利用UI的xUnit測驗方法
