我需要在修改它之後重新加載配置文件。這可以如何使用appdomains完成?代碼示例會很有用。重新加載.NET配置文件
回答
是的,這是可能的...取決於如何你訪問你的配置文件。
如果您依賴默認行爲,那麼答案是NO。
但是,如果通過項目的公共方法的static
屬性訪問配置,則可以重新加載它。
我現在沒有我的代碼片段,但是我做了類似的事情,即使使用FileSystemWatcher
來檢測config
文件中的更改。
有一個告誡,它只適用於通過代碼直接訪問的屬性,當你做這樣的事情時,自動配置不會被重新加載。
我已經找到了給定問題的解決方案。下面是代碼fiew行如何可以做到這一點:
AppDomainSetup domaininfo = new AppDomainSetup();
domaininfo.ApplicationBase = System.Environment.CurrentDirectory;
domaininfo.ConfigurationFile = "Target_Config.exe.config";
Evidence adevidence = AppDomain.CurrentDomain.Evidence;
AppDomain dom = AppDomain.CreateDomain("test", adevidence, domaininfo);
var someType =(SomeType)dom.CreateInstanceAndUnwrap("Target_Assembly",
"Target_Assembly.SomeType");
這裏的關鍵點是AppDomainSetup類,它允許設置組件上的財產的ConfigurationFile要創建。現在,我們可以監視配置文件「Target_Config.exe.config」以進行更改。當它被改變時,上面創建的appdomain應該被卸載然後重新創建。
這可能是跨多個應用程序重用配置文件而不爲每個應用程序複製的解決方案。 – Markus 2010-03-17 20:28:33
比方說,你有以下的配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="test" value="1" />
</appSettings>
</configuration>
讓我們先來試試幼稚的做法。下面的應用程序將嘗試搶命名test
每秒一次的appSetting
的價值,並打印其值:
static void Main(string[] args)
{
while(true)
{
Console.WriteLine(ConfigurationManager.AppSettings["test"]);
Thread.Sleep(1000);
}
}
但是,唉!在運行時,您會注意到它一直在打印1
,並且沒有發現任何更改。
如果你更新你的代碼下面,將解決這個問題,只要你改變它,它會拿起變化:
static void Main(string[] args)
{
while(true)
{
ConfigurationManager.RefreshSection("appSettings");
Console.WriteLine(ConfigurationManager.AppSettings["test"]);
Thread.Sleep(1000);
}
}
可惜這篇文章沒有標記爲答案。我傾向於更喜歡_verbose_答案,但是,它就是我。 – 2016-08-23 14:45:45
ConfigurationManager.RefreshSection("configuration");
Properties.Settings.Default.Reload();
- 1. NGINX不重新加載配置文件
- 2. 重新加載nginx配置文件
- 3. 重新加載nginx配置
- 4. 在運行時從外部配置文件重新加載配置設置
- 5. 爲後臺進程重新加載配置文件
- 6. 自動重新加載Windsor容器配置文件
- 7. 如何重新加載ASP.NET用戶配置文件數據
- 8. 加載配置文件
- 9. Log4Cplus加載配置文件
- 10. 笨配置文件加載
- 11. SIGHUP用於重新加載配置
- 12. Jira小配件 - 在配置屏幕上重新加載AJAX
- 13. .Net配置文件
- 14. 重新加載並重置
- 15. 重新加載xml文件後重新加載GUI
- 16. 無效配置後重新加載NLog配置
- 17. 重新加載配置而不重新啓動Emacs
- 18. 重新讀取/重新加載Grails配置文件而不重新啓動容器
- 19. 當使用SCM Sync配置插件時,使用Ansible重新加載配置
- 20. 如何重置場景重置事件訂閱(重新加載)
- 21. .Net配置文件混淆
- 22. .net 3.5配置文件+
- 23. 瞭解.Net配置文件
- 24. .NET Compact Framework:CAB文件配置
- 25. .net中的配置文件
- 26. .NET:使用配置文件
- 27. 重新載入VsVim中的配置文件?
- 28. 如何讓Jetty自動重新載入其xml配置文件?
- 29. 如何強制重新載入NLog配置文件?
- 30. Eclipse重新載入啓動配置文件
我們真的需要做後重新加載配置文件一些變化!?,我不知道,我只是問,因爲我記得讀過一些我們不需要重新加載的地方。謝謝! – 2010-03-17 19:43:57
這是什麼類型的程序? Windows服務? ASP.NET? – 2010-03-17 20:01:42
[在運行時從外部配置文件重新加載配置設置]可能的重複(http://stackoverflow.com/questions/4934898/reload-configuration-settings-from-an-external-config-file-during-run -time) – 2015-06-24 09:26:05