2013-10-22 67 views
3

我已經通過右鍵單擊解決方案=>添加=>新建文件=>雜項=>應用程序配置文件將一個app.config文件添加到我的項目中,並將其命名爲「LightmapUpdater」。 exe.config」。 「LightmapUpdater.exe」是我的可執行文件的名稱。下面是配置文件裏面有:單聲道完全忽略app.config

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

不管是什麼錯誤,我故意在文件中,它使忽略它們,不給我連一個警告。它應該是這樣嗎?爲什麼它忽略了我在那裏輸入的所有內容?在編譯之前,如何確保單聲道看起來在我的配置文件中?我必須錯過一些步驟。

回答

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'. 
+0

你是天才,這確實是問題!該文件未被複制到輸出目錄。非常感謝! –

+0

我真的很感激它,如果你可以看看我在這裏有另一個問題:http://stackoverflow.com/questions/19522244/bundling-dylib-files-with-mono-executable –