A Model of Dynamic Binding in .NET

Millions of programmers use ECMA CLI-compliant languages like VB.NET and C#. The resulting bytecode can be executed on several CLI implementations, such as those from Microsoft and the open-source Mono organisation. While assemblies are the standard unit of deployment, no standard exists for the process of finding and loading assemblies at run-time. The process is typically complex, and varies between CLI implementations. Unlike other linking stages, such as verification, it is visible to programmers and can be a source of confusion. We offer a framework that describes how assemblies are resolved, loaded and used in CLI implementations. We strive for implementation-independence and note how implementations from different organisations vary in behaviour. We describe the reflection features available for dynamic loading, and give C# examples that exercise the features modelled in the framework.

[1]  Sophia Drossopoulou,et al.  Flexible Bytecode for Linking in .NET , 2005, Electron. Notes Theor. Comput. Sci..

[2]  Davide Ancona,et al.  Modeling multiple class loaders by a calculus for dynamic linking , 2004, SAC '04.

[3]  Susan Eisenbach,et al.  Managing the Evolution of .NET Programs , 2003, FMOODS.

[4]  Daniel Le Métayer,et al.  Security and dynamic class loading in Java: a formalisation , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[5]  Sheng Liang,et al.  Dynamic class loading in the Java virtual machine , 1998, OOPSLA '98.

[6]  Drew Dean,et al.  The security of static typing with dynamic linking , 1997, CCS '97.

[7]  Sophia Drossopoulou,et al.  Flexible Models for Dynamic Linking , 2003, ESOP.

[8]  Susan Eisenbach,et al.  Feeling the way through DLL hell , 2002 .

[9]  John Gough,et al.  Technical Overview of the Common Language Runtime , 2001 .

[10]  Zhenyu Qian,et al.  A formal specification of Java class loading , 2000, OOPSLA '00.