1

我看到了许多从 C# 控制台应用程序中的外部配置文件中读取值的解决方案,但我找不到适合我的特定情况的解决方案:

  1. 由于部署的原因(主要是针对使用 Visual Studio Web 发布方法打包为 MVC 网站的一部分进行部署的控制台应用程序),exe 不会与其 app.config 文件一起打包。

  2. 我依赖于使用 ConfigurationManager.AppConfig["blah"] 语法的库,我不能很好地将自己的 AppSettingsSection 传递给这些库。

我的控制台应用程序的 .exe 文件位于 MVC 应用程序的 bin 目录中。由于网站和控制台应用程序都使用相同的配置值,我试图简单地将站点的 Web.config 文件加载到控制台应用程序中,但我还没有找到这样做的方法。

4

1 回答 1

1

默认配置文件在加载后AppDomain加载。对于控制台应用程序,配置文件必须与可执行文件位于同一位置。

我相信一种可能的解决方案是加载一个AppDomain作为控制台应用程序的子级并正确设置AppDomainSetup.ConfigurationFile属性以从自定义位置加载配置文件,然后在子级中执行整个控制台应用程序的逻辑AppDomain

您可以AppDomain.CreateDomain在这种情况下使用此重载(MSDN 文章包含有关如何提供的示例代码AppDomainSetup):

据我所知,您无法更改可执行AppDomain文件在加载后查找配置文件的默认行为,但正如我建议的那样,您可以AppDomain根据自己的要求创建自己的!

于 2013-03-13T15:53:01.110 回答