У меня есть скрипт Powershell, который загружает сборку .NET (в моем случае - .EXE) и вызывает публичный метод, который использует app.config для извлечения зашифрованной строки соединения.
Сценарий динамически копирует exe.config сборки в папку Powershell ($ pshome) как powershell.exe.config и может нормально запускаться из моего окна разработки. Проблема в том, что он не запускается из стандартной установки Windows Server 2003.
Я убедился, что exe.config правильно копируется в каталог powershell. Я запустил SysInternals Process Explorer и убедился, что процесс обращался к файлам конфигурации (ни один файл не обнаружил сообщения). Я удаленно отладил экземпляр powershell.exe и вижу, что сборка загружается нормально, но не может получить доступ к значениям ConfigurationManager.AppSettings [...] (возвращает ноль).
У меня нет идей. Я читал, что могу использовать отдельный домен приложения, но не вижу примеров того, как сделать это с помощью Powershell.
Мой код делает что-то с эффектом:
$absolute_path = "c:\foo.exe"
$config_path = $absolute_path + ".config"
copy "$config_path" "$pshome\powershell.exe.config" -Force
[Reflection.Assembly]::LoadFrom($absolute_path)
$foo = new-object MyFooAssembly.FooClass
$foo.DoSomething()
В Vista код работает, в Windows Server 2003 код не работает.