
	   HOWTO bundle assemblies inside the mono runtime.
		   Paolo Molaro (lupus@ximian.com)

* Intent

	Bundling assemblies inside the mono runtime may be useful for a number
	of reasons:

		* creating a standalone complete runtime that can be more easily
		distributed

		* having an application run against a known set of assemblies
		that has been tested
	
	Of course, there are drawbacks, too: if there has been fixes
	to the assemblies, replacing them means recompiling the
	runtime as well and if there are other mono apps, unless they
	use the same mono binary, there will be less opportunities for
	the operating system to optimize memory usage. So use this
	feature only when really needed.

* Creating the Bundle
	
	To bundle a set of assemblies, you need to create a file that
	lists the assembly names and the relative files. Empty lines
	and lines starting with # are ignored:
	
	== cut cut ==
	# Sample bundle template
	mscorlib: /path/to/mscorlib/assembly.dll
	myapp: /path/to/myapp.exe
	== cut cut ==
	
	Next you need to build the mono runtime using a special configure option:

		./configure --with-bundle=/path/to/bundle/template

	The path to the template should be an absolute path.

	The script metadata/make-bundle.pl will take the specifie
	assemblies and embed them inside the runtime where the loading
	routines can find them before searching for them on disk.

* Open Issues

	There are still two issues to solve:

		* config files: sometimes they are needed but they are
	          not yet bundled inside the library ()

		* building with the included libgc makes it not
	          possible to build a mono binary statically linked to
	          libmono: this needs to be fixed to make bundles
	          really useful.

	
