Я написал C # Windows Service для управления расписанием задач для нашего приложения. Я пытаюсь переместить сборки «бизнес-правил» в подкаталог bin приложения планирования, чтобы упростить нам обновление (остановка службы, удаление всех файлов в папке bin, замена новыми, запуск службы).
Я добавил
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;"/>
</assemblyBinding>
</runtime>
в конфигурацию приложения службы, и она отлично работает, если служба запускается как консольное приложение. Проблема в том, что когда служба запускается как служба Windows, она не работает. Похоже, что когда Windows запускает службу, файл конфигурации приложения читается правильно, но затем служба выполняется так, как если бы она находилась в каталоге c: \ windows \ system32, а не в самом месте EXE, и это приводит к сбоям в работе.
У нас много сборок, поэтому я действительно не хочу использовать GAC или <codeBase>
. Возможно ли, чтобы EXE изменил свой базовый каталог обратно туда, где он должен быть при запуске в качестве службы?