Abstract
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.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Buckley, A., Drossopoulou, S.: Flexible Dynamic Linking. In: ECOOP Workshop on Formal Techniques for Java Programs (FTfJP 2004), Oslo, Norway (June 2004)
Buckley, A., Murray, M., Eisenbach, S., Drossopoulou, S.: Flexible Bytecode for Linking in .NET. In: First Workshop on Bytecode Semantics, Verification, Analysis and Transformation (BYTECODE 2005), Edinburgh, Scotland. ENTCS. Elsevier BV, Amsterdam (2005)
Cook, S.: .NET CLR Loader Notes (2005), http://blogs.msdn.com/suzcook
de Icaza, M.: Mono (2005), http://www.mono-project.com/
Dean, D.: The Security of Static Typing with Dynamic Linking. In: Proceedings of the Fourth ACM Conference on Computer and Communications Security, Zurich, Switzerland (April 1997)
Drossopoulou, S., Lagorio, G., Eisenbach, S.: Flexible Models for Dynamic Linking. In: Degano, P. (ed.) ESOP 2003. LNCS, vol. 2618, pp. 38–53. Springer, Heidelberg (2003)
ECMA. Standard ECMA-335: Common Language Infrastructure. ECMA International (December 2002), http://www.ecma-international.org/publications/standards/Ecma-335.htm
Eisenbach, S., Jurisic, V., Sadler, C.: Feeling the way through DLL Hell. In: Proceedings of the First Workshop on Unanticipated Software Evolution (USE 2002), Malaga, Spain (June 2002)
Eisenbach, S., Jurisic, V., Sadler, C.: Managing the Evolution of .NET Programs. In: Najm, E., Nestmann, U., Stevens, P. (eds.) FMOODS 2003. LNCS, vol. 2884, pp. 185–198. Springer, Heidelberg (2003)
Fagorzi, S., Zucca, E., Ancona, D.: Modeling Multiple Class Loaders by a Calculus for Dynamic Linking. In: Proceedings of the ACM Symposium on Applied Computing (SAC 2004), Nicosia, Cyprus (March 2004)
Farkas, S.: .NET Security Blog (2005), http://blogs.msdn.com/shawnfa
Gero, C., Richter, J.: The Future of Assembly Versioning (2004), http://www.theserverside.net/articles/showarticle.tss?id=AssemblyVersioning
Jensen, T., Le Metayer, D., Thorn, T.: Security and Dynamic Class Loading in Java: A Formalisation. In: Proceedings of the IEEE International Conference on Computer Languages, Chicago, IL, USA, pp. 4–15 (1998)
Liang, S., Bracha, G.: Dynamic Class Loading in the Java Virtual Machine. In: Proceedings of the 13th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages & Applications (OOPSLA 1998), Vancouver, BC, Canada (October 1998)
Meijer, E., Gough, J.: Technical Overview of the Common Language Runtime. Microsoft (2000)
Moth, D.: (2004), http://www.danielmoth.com/Blog
Pratschner, S.: .NET CF WebLog (2005), http://blogs.msdn.com/stevenpr
Qian, Z., Goldberg, A., Coglio, A.: A Formal Specification of Java Class Loading. In: Proceedings of the 15th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages & Applications (OOPSLA 2000), Minneapolis, MN, USA, pp. 325–336 (2000)
Shi, A.: The Fusion Weblog (2005), http://blogs.msdn.com/alanshi
Zhang, J.: .NET Framework Notes (2005), http://blogs.msdn.com/junfeng
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Buckley, A. (2005). A Model of Dynamic Binding in .NET. In: Dearle, A., Eisenbach, S. (eds) Component Deployment. CD 2005. Lecture Notes in Computer Science, vol 3798. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11590712_12
Download citation
DOI: https://doi.org/10.1007/11590712_12
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-30517-0
Online ISBN: 978-3-540-32281-8
eBook Packages: Computer ScienceComputer Science (R0)