Mono完全忽略了app.config

Ily*_*ski 3 macos mono app-config monodevelop

我通过右键单击解决方案=>添加=>新文件=>其他=>应用程序配置文件,将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>
Run Code Online (Sandbox Code Playgroud)

无论我故意在文件中犯了什么错误,它都会忽略它们,甚至不给我一个警告.它应该是那样的吗?为什么它忽略了我在那里输入的所有内容?在编译之前,如何确保单声道内部查看配置文件?我必须错过一些步骤.

kon*_*ski 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

配置文件的内容是从您的问题中复制粘贴的.执行的效果:

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
Run Code Online (Sandbox Code Playgroud)

编辑: 要跟踪/调试这个你可以使用MONO_LOG_LEVEL.例如:

MONO_LOG_LEVEL=debug mono Test773.exe | grep config
Run Code Online (Sandbox Code Playgroud)

结果是:

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'.
Run Code Online (Sandbox Code Playgroud)