For starters, Mono on Linux stores the GAC as a list of files, paths, and links between the two. Most of the code which creates the base mono runtime utilizes a compile time flag named MONO_ASSEMBLIES. This value is set by default to $prefix/lib within the build system.
On most linux distros $prefix is set to "/usr", so MONO_ASSEMBLIES
would be /usr/lib.
With this in mind, the actual base paths for the GAC is $prefix/lib/mono/gac
. You can also set an environment variable for the mono (MONO_GAC_PREFIX
) which allows you to set multiple base paths for the GAC.
As this path can be changed per install and mono allows for multiple paths utilizing an environment variable, you might need to get the base path of Assembly.Location. Also, Assembly.GlobalAssemblyCache will help you determine if you need to check its path at all.
I hope this helps!