Последовательность загрузки DLL при запуске службы - PullRequest
3 голосов
/ 11 ноября 2010

Как мы можем проследить последовательность загрузки сборки при запуске службы Windows?

Например.Когда мы запускаем сервис, он загружает все эталонные сборки и их зависимости;то, что я хочу сделать, - это то, какие сборки (ОС, CLR и т. д.) загружаются до фактического запуска службы.

1 Ответ

2 голосов
/ 11 ноября 2010

Для этого можно использовать событие AssemblyLoad на AppDomain.CurrentDomain.

static void Main(string[] args)
{
    AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);

    Assembly.Load("ICSharpCode.SharpZipLib");

    Console.WriteLine("Completed loading");

    /*
     * This produced:

       Loaded assembly C:\Documents and Settings\...\ConsoleApplication2\bin\Debug\ICSharpCode.SharpZipLib.dll
       Completed loading
     */
}

static void CurrentDomain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
{
    Console.WriteLine("Loaded assembly " + args.LoadedAssembly.Location);
}

Обратите внимание, что это будет работать только для сборок, которые загружаются из точки, в которую вы добавляетесобытие.Например, mscorlib уже загружен до вызова Main, потому что это необходимо для запуска Main.

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

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