Hi there,

My name is Junfeng Zhang and I work in fusion team under AlanShi. Before I joined Microsoft I was a graduate student in University of Wisconsin-Madison. Prior to that I studied in University of Science and Technology of China, in Hefei, Anhui, CHINA. In my day-to-day work I primarily interact with CLR loader (Which means Suzanne Cook:)) and ngen. Occasionally I talk to people in Asp.Net, security, setup, SQL Server, as well as people from various team.

So what exactly is fusion? Alan gave an overview what is fusion in general. It is a vision to solve dll hell problem. As of today the vision is implemented in two separate world. Fusion/Win32 which exists in the pure unmanaged world, and Fusion/URT in the managed world. Fusion/Win32 is commonly referred to as SxS because most of its code lives in sxs.dll, while Fusion/URT referred to as Fusion since it is shipped as fusion.dll with .Net framework redist. Fusion/URT is what I work on and what I will talk about in my weblog.

Specifically, Fusion/URT's responsibility are 1. Manage GAC and ngen image cache. 2. Manage binding policy. 3. Find actual bits and present them to CLR loader when an assembly loading is requested. CLR loader takes on then to make the bits usable for managed code execution.

From now on when I say Fusion, I mean Fusion/URT unless specifically mentioned.

As of today, there are four explicit assembly loading requests: Assembly.Load/Assembly.Load(byte[])/Assembly.LoadFrom/Assembly.LoadFile. Assembly.Load and Assembly.LoadFrom go through fusion. Fusion does not directly involve in the other two assembly loading methods.

This weblog will primarily focus on fusion. Sometimes I will touch CLR loader, and other parts of .Net framework as well.

This weblog should be considered as complement to Alan's and Suzanne's blog.

Thanks for listening.