为.NET控制台应用程序加载不同的app.config

时间:2011-11-29 07:37:07

标签: .net app-config console-application

我在几台Windows 2008计算机上从共享网络文件夹运行.NET控制台应用程序,并希望为运行控制台的每台Windows 2008计算机分离app.config文件。这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您有一些选项,这取决于您是否可以更改和重新编译控制台应用程序:

  1. 将可执行文件和从属库的副本放在不同的子目录中,并为每个子目录提供自定义app.config。像每个客户端计算机的共享/子目录。当然,这可能会变成维护噩梦或空间占用体验。对于简单的解决方案/需求,它可能仍然可行。
  2. 作为(1)的变体,将相同控制台应用程序二进制文件的副本放在同一目录中,具有不同的名称。将app.config的各个版本放在同一目录中,命名为可执行文件的副本。同样,这与(1)相同(如果不是更多)问题,但可能有效,具体取决于您的确切要求。
  3. 从新的AppDomain重新启动您的可执行文件。这允许您为新应用程序域的app.config指定自定义路径/文件名。无耻的插件:https://stackoverflow.com/a/3633158/21567。请注意,此方法不仅限于在新应用程序域中执行您自己的程序集。您还可以编写一个托管存根应用程序,它只在您真正想要运行的控制台应用程序上执行ExecuteAssembly(可能无法更改),为其提供自定义app.config。
  4. 编写承载CLR本身的本机存根进程。这还允许您指定要使用的app.config文件的路径/名称。