The Mono Collection of Library Assemblies
This section details the libraries Mono provides for running .NET programs.
Base Class Library (BCL) and Beyond
BCL is the name for a set of DLLs that make up the standard library of the .NET Framework. These library assemblies are available to all languages through a binding mechanism. Mono implements BCL, and you can install it with Debian package libmono-system2.0-cil. This package also installs the Mono Core Library (mscorlib.dll), the glue between BCL, JIT, and Mono Security Library.
Where does Mono search for the library assemblies that a program needs? Firstly, it tries to find them in the current directory and then in the directories assigned to the MONO_PATH environment variable. As a last resort, it turns to Global Access Cache (GAC). Designed to solve the age-old Microsoft problem called "DLL hell," GAC is the central repository of library assemblies. Among other features, it allows developers to have libraries with the same name but different version numbers. GAC is a tool mainly for developer teams; its main goal is letting users share their assemblies.
GAC introduced and continues to supports the concept of strong names for assemblies. A strong name is made up of the simple filename, version number, what is called culture (optional), and a public key. The Debian package mono-gac installs the gacutil command-line utility, which mimics all the features of the .NET homonym command.
GTK# and Windows Forms
Your Mono program probably will need a GUI, and you need a graphic framework to implement rich and efficient user interfaces. In Mono, you have a number of options but the best one is GTK#, a Mono binding around the GTK+ GUI libraries upon which the GNOME project is based.
In Debian, a metapackage called gtk-sharp2 provides all the packages needed to compile a GTK# program. The /usr/share/gtk-sharp2-examples directory also contains some interesting examples. The Mono for Windows installation setup also will install all GTK# library assemblies for a complete compatibility so your GTK# programs will run in Windows.
The Mono team removed most of the obstacles that prevented the implementation of .NET Windows Forms library assemblies. You install them with the package libmono-winforms2.0-cil. Just remember to use the -pkg:dotnet
option when compiling a Windows Forms program.
Web Development and ASP.NET
With the package libmono-system-web2.0-cil, you can program in ASP.NET. Then you have two choices for running your ASP.NET applications: with Apache, installing mono-server-apache or with a lightweight web server called xsp, installing mono-xsp.
Mono also supports the ADO.NET Framework and its way of connecting to databases. The libmono2.0-cil package provides, among others, the Mono.Data.dll
, which offers Provider Factory and Data Tools for Mono ADO.NET. Mono can use the ADO.NET Framework to interact with open source databases, for example MySQL Connector/Net
from MySQL AB is the recommended .NET and Mono data provider for MySQL.