Как динамически загружать библиотеки DLL из службы Windows - PullRequest
0 голосов
/ 02 марта 2012

DLL могут быть легко загружены из приложения динамически, выполнив следующие действия:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();

Затем я вызываю метод CodeBase () класса Assembly, чтобы получить каталог, в котором находится приложение.Затем я бы вызвал Directory.GetFiles (), чтобы получить список всех файлов с расширением DLL, а затем вызвал Assembly.LoadFile ().

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

Ответы [ 2 ]

1 голос
/ 02 марта 2012

Если служба реализована в управляемом коде, вы можете выполнить те же самые шаги, которые изложили в своем вопросе.Эта служба по-прежнему является управляемым приложением, и System.Reflection.Assembly.GetExecutingAssembly().Location предоставит местоположение вашей сборки, которая является вашей службой.Затем вы можете использовать GetDirectoryName, чтобы найти каталог установки службы.

0 голосов
/ 02 марта 2012

Я предполагаю, что вы используете шаблон проекта установщика.Возможно, вам не нужно использовать отражение, но вместо этого изучите реализацию класса установщика и во время события фиксации убедитесь, что требуемые сборки находятся в целевом каталоге.

http://msdn.microsoft.com/en-us/library/system.configuration.install.installer.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...