我創建了一個命令行應用程序,並將其許多配置移動到標準設置文件中。所有設置都被聲明爲Scope = Application,因爲沒有關於應用程序邏輯的特定用戶。我訪問值在整個代碼app.config - 如何在運行時強制從文件加載?
Properties.Settings.Default.<whatever>
這非常適用,因爲它按計劃自動運行。更新配置文件中的值將反映在輸出中。
過了一段時間,我創建了一個基本的GUI(在同一個命名空間中)來直接啓動命令行應用程序(通過單獨的構造函數)。我沒有做大量的.Net編程,但我基本上使用我的CLI應用程序,就像一個DLL(我不知道是否有適當的術語;在我的輸出文件夾中,我需要的只是GUI。 exe,CLI.exe和CLI.exe.config,它的工作原理)。但是,我注意到以這種方式啓動時,CLI.exe.config文件未加載; CLI應用程序僅使用其編譯的默認值。我希望配置文件的方法可以在這種情況下工作。
我嘗試下面的方法來強制加載配置文件,但至今都交白卷:
1:
ConfigurationManager.RefreshSection("appSettings")
2:
ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = Path.Combine(Environment.CurrentDirectory, System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".exe.config");
ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None).Save(ConfigurationSaveMod.Modified);
ConfigurationManager.RefreshSection("appSettings");
3:
Properties.Settings.Default.Reload();
這些都不會產生錯誤,但Properties.Settings.Default.Value
我有在配置文件中修改沒有更新。有沒有辦法在這裏完成我所需要的?
編輯:這裏是我的CLI.exe.config文件的樣本,如果它有助於說明什麼,我試圖完成這裏:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="CLI.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</sectionGroup>
</configSections>
<connectionStrings/>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<applicationSettings>
<CLI.Properties.Settings>
<setting name="URLBase" serializeAs="String">
<value>https://cloud.mycompany.com/</value>
</setting>
<setting name="URLPage" serializeAs="String">
<value>/inventory.aspx#view/Invoice/</value> <!-- This is the value I'm trying to change -->
</setting>
...
我還要提到的是我也試過「的applicationSettings '代替上述代碼中的'appSettings'。
'ConfigurationManager.RefreshSection(「appSettings」)'適用於我。你確定app.config真的更新了嗎? – Alexander
「Properties.Settings」中的用戶設置與輸出文件夾中的'.config'文件不應有任何關係,它們存儲在用戶的本地應用程序數據文件夾中。 – Groo
GUI.exe將讀取GUI.exe.config而不是cli.exe.config - 就這麼簡單。 –