[Mono-dev] What directories/files needed to distribute a mono runtime from a build?

Jonathan Pobst monkey at jpobst.com
Tue Dec 28 00:24:49 EST 2010

The absolute bare minimum you need to run a Mono app (hello world) is 
the runtime (mono) and mscorlib.dll.

Anything past that depends on what your application uses.


On 12/27/2010 10:53 PM, CodeSlinger wrote:
> I've basically asked this before, so sorry for the repost, but my other
> thread got garbled when I had to delete posts in order to keep from getting
> continuous warnings about not being approved even though I had registered
> after posting them.
> Basically I want just a minimal runtime or even the whole runtime but
> nothing else from the build. It was essentially suggested to "just delete
> what you don't need" which is sort of like telling someone wanting a wooden
> bear to just get a log and cut away the parts that don't look like a bear
> (ya I live in the mountains and there are a lot of wooden bear wood carvers
> here and I'm not one of them).
> After custom building 2.8.1 on my RHEL45 system, my /usr/mono directory is
> 1.2G and I would like to zip a fairly minimal runtime for deployment to
> other boxes. According to the doc on assembly search order, all needed dlls
> are supposedly in the GAC but that is obviously not the whole story since
> mscorlib.dll is in the /usr/mono/lib/mono/4.0 directory. And in the GAC
> there are 2.0 and 4.0 components under the component type rather than under
> the version so it is harder to distribute just once version such as 4.0.
> So anyway, I might then think all I needed was (prefix=/usr/mono) -
> /usr/mono/bin - for the mono program
> /usr/mono/lib/mono/gac - for all the 4.0 system assemblies except my own and
> 3rd party
> /usr/mono/lib/mono/4.0 - for mscorlib.dll
> and that should be sufficient to run my command line mono app.
> Is it? I did not delete several /usr/mono directories to test that theory.
> To run a command line 4.0 app, do I need anything besides the above 3
> directories?
> Also, someone suggested just ship what is referenced by my pgm which makes
> sense but for example, mscorlib.dll is not referenced in my VS2010 built
> project (in fact I deleted ALL references in the VS2010 references section)
> yet mscorlib.dll is in fact needed and is NOT in the GAC but rather found in
> /usr/mono/lib/mono/4.0.
> I could experiment, and delete files and directories to see what works and
> what does not but I think a true need would be served by having some script
> or whatever package up a runtime either based on your exe or on general
> requirements, or even just ALL of the runtime would be better than
> distributing all of the 1.2G of files including source, compilers etc.
> resulting from the build.
> All suggestions appreciated. Maybe this is not a problem for some but I have
> to think there are other developers in the same boat as myself not wanting
> to cut away all the parts that don't look like a runtime.
> Thanks, Dave

More information about the Mono-devel-list mailing list