Загрузите другой app.config для консольного приложения .NET - PullRequest
1 голос
/ 29 ноября 2011

Я запускаю консольное приложение .NET из общей сетевой папки на нескольких компьютерах с Windows 2008 и хотел бы разделить файл app.config для каждого компьютера с Windows 2008, на котором запущена консоль.Какой лучший способ сделать это?

1 Ответ

1 голос
/ 29 ноября 2011

У вас есть несколько параметров, которые зависят от того, можете ли вы изменить и перекомпилировать консольное приложение или нет:

  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 для использования.
...