4

ソリューションを右クリックして app.config ファイルをプロジェクトに追加しました => 追加 => 新しいファイル => その他 => アプリケーション構成ファイルを選択し、「LightmapUpdater.exe.config」という名前を付けました。「LightmapUpdater.exe」は実行可能ファイルの名前です。構成ファイルの内容は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <dllmap dll="libIL" target="/opt/local/lib/libil.dylib" />
</configuration>

ファイルで意図的にどんな間違いを犯しても、それは無視され続け、警告は 1 つも出されません。そんなはずじゃないの?入力した内容がすべて無視されるのはなぜですか? コンパイルする前に mono が設定ファイル内を参照するようにするにはどうすればよいですか? 私はいくつかのステップを逃している必要があります。

4

1 に答える 1

6

それは私にとってはうまくいきます。実行可能ファイル Test773.exe を使用すると、ファイルの名前は Test773.exe.config になり、指定された dll マッピングが行われます。ファイルはexeファイルと同じディレクトリにありますか? MonoDevelop の「出力にコピー」オプションでマークされていますか?

アプリケーションのソース コード:

using System;
using System.Runtime.InteropServices;

namespace Test773
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            Funkcja();
        }

        [DllImport("libIL")]
        public static extern void Funkcja();
    }
}

構成ファイルの内容は、質問からコピーして貼り付けたものです。実行の効果:

Unhandled Exception:
System.DllNotFoundException: /opt/local/lib/libil.dylib
  at (wrapper managed-to-native) Test773.MainClass:Funkcja ()
  at Test773.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.DllNotFoundException: /opt/local/lib/libil.dylib
  at (wrapper managed-to-native) Test773.MainClass:Funkcja ()
  at Test773.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0

編集: これをトレース/デバッグするには、を使用できますMONO_LOG_LEVEL。例えば:

MONO_LOG_LEVEL=debug mono Test773.exe | grep config

結果:

Mono: Config attempting to parse: '/usr/lib/mono/4.5/mscorlib.dll.config'.
Mono: Config attempting to parse: '/usr/etc/mono/assemblies/mscorlib/mscorlib.config'.
Mono: Config attempting to parse: '/usr/etc/mono/config'.
Mono: Config attempting to parse: '/home/konrad/.mono/config'.
Mono: Config attempting to parse: '/home/konrad/eksperymenty/Test773/Test773/bin/Debug/Test773.exe.config'.
Mono: Config attempting to parse: '/usr/etc/mono/assemblies/Test773/Test773.config'.
于 2013-10-22T15:30:36.963 に答える