How does the linker and mini-deployment work?
.NET programs are distributed in unit of assemblies, one assembly often refers to a few other assemblies. Our linker first loads the entry assembly, finds its entry point for an EXE file, or some public methods for a DLL file, it then recursively follows the calling graph of the MSIL code to link all required code together. The code might reside in the same assembly as the entry module, or in some referenced assemblies. During the walk, relevant classes and other entities are marked. By the end, a new assembly that contains all required bits of code is created. The entry point methods can be configured using our GUI tool. The mini-deployment tool uses fusion APIs to find out all of the dependent assemblies and modules, including those in the GAC (Global Assembly Cache) and those in the application directory, then copy them into the deployment folder. The deployment folder maintains a directory hierarchy that emulates the Microsoft .NET installation; it contains its own GAC, its own reg