我需要在修改它之后重新加载配置文件。这可以如何使用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. 在运行时从外部配置文件重新加载配置设置
- 3. 为后台进程重新加载配置文件
- 4. 如何重新加载ASP.NET用户配置文件数据
- 5. 自动重新加载Windsor容器配置文件
- 6. 加载配置文件
- 7. Log4Cplus加载配置文件
- 8. .Net配置文件
- 9. 无效配置后重新加载NLog配置
- 10. 重新加载配置而不重新启动Emacs
- 11. 当使用SCM Sync配置插件时,使用Ansible重新加载配置
- 12. 如何重置场景重置事件订阅(重新加载)
- 13. Eclipse重新载入启动配置文件
- 14. 如何强制重新载入NLog配置文件?
- 15. JUnit 4&Spring Boot - 在测试之前选择性地重新加载上下文/重新加载Spring Security配置
- 16. .NET:使用配置文件
- 17. .NET Compact Framework:CAB文件配置
- 18. 了解.Net配置文件
- 19. .Net配置文件混淆
- 20. 使Java应用程序在运行时重新加载配置文件
- 21. 红宝石宝石自动重新加载配置文件在运行时
- 22. 在不重新启动Servlet容器的情况下重新加载/刷新Spring配置文件
- 23. 用WebRequest VB .Net重新加载URL
- 24. `gulp serve`卡住了[BS]重新加载匹配的文件:* .js“
- 25. web.xml配置直接加载html文件
- 26. 配置文件加载两次
- 27. 的Kohana 3.2不加载配置文件
- 28. 加载自定义配置文件
- 29. pyinstaller:无法加载配置文件
- 30. Symfony 3.0从php文件加载配置
我们真的需要做后重新加载配置文件一些变化!?,我不知道,我只是问,因为我记得读过一些我们不需要重新加载的地方。谢谢! – 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