Mono(mono-config)
β¨ NAME β¨
okay bestie, gather round, this is mono-config β the Mono runtime file format configuration π and yes it's the manual page for Mono(mono-config), we love a self-titled moment.
πΈ DESCRIPTION πΈ
So here's the tea π«: the Mono runtime is gonna load its config data from the installation prefix /etc/mono/config file, or from ~/.mono/config, or from whatever file the MONO_CONFIG environment variable points at. Choose your fighter π
Then, for every assembly that gets loaded, a config file named:
/path/to/the/assembly.exe.config
gets loaded too β plus this one:
~/.mono/assemblies/ASSEMBLY/ASSEMBLY.EXT.config
This file is literally the main character that controls how the runtime behaves π
The file is an XML-like file with various sections, and all of them live inside a section (ngl it actually uses GMarkup to parse the file, that's the real mechanic π§).
This page is describing the Unix-specific and Mono-specific extensions to the config file β for the complete details you gotta go see the http://www.mono-project.com/Config web page. iykyk β¨
π <dllmap> directive
You use the dllmap directive to map shared libraries that are referenced by P/Invoke in your assemblies to a different shared library. it's giving translator energy π
This is typically used to map Windows libraries over to Unix library names. The dllmap element takes two attributes:
dllβ this should be the exact same string used in theDllImportattribute, optionally prefixed with"i:"to indicate that the string must be matched in a case-insensitive way πtargetβ this should be the name of the library where the function can actually be found. this name should be suitable for use with the platform native shared library loading routines (dlopenetc.), so likeβ¦ you may wanna check the manpages for that too, bestie π
π¦ <dllentry> directive
This directive can be used to map a specific dll/function pair to a different library and also a different function name. It should appear inside a dllmap element that has only the dll attribute specified. very specific of it, we respect it π
The dllentry element takes 3 attributes:
dllβ this is the target library, where the function can be found π―nameβ this is the name of the function as it appears in the metadata: it's the name of the P/Invoke method β¨targetβ this is the name of the function to look up instead of the name specified in the P/Invoke method π
π Mapping based on operating system and cpu
Both the dllmap and the dllentry elements allow the following two attributes, which make it easy to use a single config file and support multiple operating systems and architectures with different mapping requirements. one file, many vibes, obsessed π
osβ this is the name of the operating system for which the mapping should be applied. Allowed values are:linux,osx,solaris,freebsd,openbsd,netbsd,windows,aix,hpux.cpuβ this is the name of the architecture for which the mapping should be applied. Allowed values are:x86,x86-64,sparc,ppc,s390,s390x,arm,mips,alpha,hppa,ia64.wordsizeβ this is the size of registers on the target architecture, it can be either32or64.
The attribute value for both attributes can be a comma-separated list of the allowed values. Additionally, the first character may be a '!' to reverse the meaning π An attribute value of "!windows,osx", for example, would mean that the entry is considered on all operating systems, except on Windows and OS X. No spaces are allowed in any part of the value β not even one, periodt π«
β οΈ heads up bestie: note that later entries will override the entries defined earlier in the file. order matters, no cap π
π₯ EXAMPLES π₯
The following example maps references to the cygwin1.dll shared library to the libc.so.6 file:
<configuration>
<dllmap dll="i:cygwin1.dll" target="libc.so.6"/>
</configuration>
The library name in the DllImport attribute is allowed to be in any case variant, like the following examples:
[DllImport ("cygwin1.dll")]
[DllImport ("Cygwin1.dll")]
[DllImport ("cygwiN1.Dll")]
This one maps the following C# method:
[DllImport ("libc")]
static extern void somefunction ();
to differentfunction in libdifferent.so, but to the same function in the library libanother.so when running under the Solaris and FreeBSD operating systems ππ¦
<configuration>
<dllmap dll="libc">
<dllentry dll="libdifferent.so" name="somefunction" target="differentfunction" />
<dllentry os="solaris,freebsd" dll="libanother.so" name="somefunction" target="differentfunction" />
</dllmap>
</configuration>
π SEE ALSO π
mono(1)monodis(1)mint(1)
and that's the whole page, bestie β this was the Mono(mono-config) manual, stay configured and stay iconic ππ
π¦ where this page comes from
- alpine 3.24: mono-doc 6.14.1-r1 Β· MIT
- epel 10: mono-core 6.14.1-1.el10_2 Β· MIT
- fedora 44: mono-core 6.14.1-3.fc44 Β· MIT
- fedora 44: mono-core 6.14.1-3.fc44 Β· MIT
- fedora 44: mono-core 6.14.1-4.fc44 Β· MIT
- fedora 44: mono-core 6.14.1-4.fc44 Β· MIT
- nixos 26.05: mono 6.14.1
- nixpkgs unstable: mono 6.14.1
- ubuntu resolute: mono-runtime 6.14.1+ds2-2 Β· MIT
- ubuntu stonking: mono-runtime 6.14.1+ds2-3 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms