サイトトップまとめドキュメントMono.exe形式のMono/.NETアセンブリの実行 ≫ ライブラリアセンブリの実行時の参照

ライブラリアセンブリの実行時の参照

実行時にライブラリアセンブリ(.dll形式)に動的リンクするMono/.NETアセンブリは、実行時にそのライブラリアセンブリを全て見つけられないと実行ができず、System.IO.FileNotFoundException例外を起こして終了してしまう。

Global Assembly Cache (GAC)

一般的には、ディストリのパッケージで提供されるMono/.NETアセンブリのライブラリはGlobal Assembly Cache (GAC)と呼ばれる場所に配置され、システム(マシン)内で常に参照可能となる。そのライブラリのパッケージ(に含まれるライブラリアセンブリ)に依存するMono/.NETアセンブリを動かす際には特にその参照のための特別な作業は必要ない。

配置ディレクトリは/usr/lib/mono/gac/以下が標準だが、複数のGACを扱う仕組みもある。

環境変数MONO_PATH

環境変数MONO_PATHに半角コロン(:)区切りで記述したディレクトリ群は実行時におけるライブラリアセンブリの追加の探索ディレクトリとして動作する。

例87 /home/user/mono/lib/と/usr/local/mono/lib/を追加の探索ディレクトリにして実行

$ MONO_PATH=/home/user/mono/lib:/usr/local/mono/lib mono [.exeファイルの場所]

プロセスアセンブリと同じディレクトリからの参照

Global Assembly Cache (GAC)のディレクトリや環境変数MONO_PATH内のディレクトリに該当ライブラリアセンブリが含まれない場合でも、.exe形式のMono/.NETアセンブリ(プロセスアセンブリ)のあるディレクトリにライブラリアセンブリが存在していれば、これが用いられる。

[注記]メモ

現在の作業ディレクトリにライブラリアセンブリが存在しても、(その作業ディレクトリが)実行したいプロセスアセンブリのあるディレクトリと異なるディレクトリであれば用いられることはない(作業ディレクトリはライブラリアセンブリの参照処理に影響しない)。