mono忽略app.config文件中的dllmaps

Cal*_*ius 8 linux mono

似乎Mono忽略了本地配置文件中的dllmaps.

我想在Linux(ubuntu)上移植我的.NET应用程序,它调用本机库,所以我有dllmaps来使我的代码工作.单声道文档说你必须为something.exe创建一个something.exe.config并将特定于应用程序的配置放入其中.它解析文件(因为如果我在其中犯了一些拼写错误就会抱怨)并且文件名是正确的但它似乎忽略了dllmaps.

配置文件很简单:

<configuration>
<dllmap dll="i:openal32.dll" target="libopenal.so" />
</configuration>
Run Code Online (Sandbox Code Playgroud)

Mono没有找到openal32.dll并抛出DllNotFoundException.但是如果我在主/ etc/mono/config文件中复制那个dllmap条目,那么一切都很好.如果做$ MONO_LOG_LEVEL = debug mono ...技巧看看它做了什么,我看到根本没有尝试加载libopenal.so.但许多人试图加载libopenal32.dll,./ libopenal32.dll libopenal32.so,openal32.so等文件.

可能我又遇到了一个Mono bug?

我想在存档中打包此配置文件,我不想让我的用户弄乱/ etc/mono/config文件.

有任何想法吗?

lup*_*pus 8

代码中的所有DllImport属性是使用"openal32.dll"还是使用"openal32"?在任何情况下,配置文件都是指包含P/Invoke方法的程序集:最可能的问题是您为主程序集创建了配置,而P/Invoke方法位于单独的库程序集中.只需将文件重命名为OpenAlUsingAssembly.dll.config即可.