我们如何在Windows服务启动时跟踪程序集的加载顺序?
例如,当我们启动一个服务时,它会加载所有引用程序集及其依赖项;我想知道的是,在实际启动服务之前加载了哪些程序集(操作系统、CLR或其他)。
AppDomain.CurrentDomain
上的AssemblyLoad
事件来实现这一点。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
。