一尘不染

将app.config文件重定位到自定义路径

c#

是否可以将整个App.Config文件重定位到自定义路径?

配置文件与exe驻留在同一文件夹中似乎有点奇怪,Windows的新方法是将所有程序设置保存在c:\ ProgramData和所有程序中。

我们还有一个附加要求,就是以编程方式指定在哪里可以找到app.config文件。原因是我们从相同的exe生成了不同的服务实例,并且希望将每个服务的app.config存储在该服务的settings文件夹下的c:\
ProgramData \\下。


阅读 498

收藏
2020-05-19

共1个答案

一尘不染

每个AppDomain都有/可以有自己的配置文件。CLR主机创建的默认AppDomain使用programname.exe.config。如果要提供自己的配置文件,请创建单独的AppDomain。例:

// get the name of the assembly
string exeAssembly = Assembly.GetEntryAssembly().FullName;

// setup - there you put the path to the config file
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = System.Environment.CurrentDirectory;
setup.ConfigurationFile = "<path to your config file>";

// create the app domain
AppDomain appDomain = AppDomain.CreateDomain("My AppDomain", null, setup);

// create proxy used to call the startup method 
YourStartupClass proxy = (YourStartupClass)appDomain.CreateInstanceAndUnwrap(
       exeAssembly, typeof(YourStartupClass).FullName);

// call the startup method - something like alternative main()
proxy.StartupMethod();

// in the end, unload the domain
AppDomain.Unload(appDomain);

希望能有所帮助。

2020-05-19