2011-12-30 32 views
0

我寫了一個方法來通過HTTP POST提交錯誤報告。我運行OSX-Lion和MonoDevelop。該代碼在從MonoDevelop調用應用程序時起作用。當我運行的.app它拋出一個異常:HttpWebRequest在MonoDevelop之外崩潰

System.TypeInitializationException: An exception was thrown by the type initializer for System.Net.WebRequest ---> System.DllNotFoundException: libc.dylib 
    at (wrapper managed-to-native) System.Platform:uname (intptr) 
    at System.Platform.get_IsMacOS() [0x00000] in <filename unknown>:0 
    at System.Net.WebRequest..cctor() [0x00000] in <filename unknown>:0 
    --- End of inner exception stack trace --- 
    at ch.fangorn.LIF.Access.SubmitCrash.Submit (Int32 projectId) [0x00000] in <filename unknown>:0 

此刻,我叫不直接通過捕捉提交方法。因爲它在調試器連接時工作,所以我陷入困境。我到目前爲止已經試過:

  1. 建立一個單一的應用程序包(創建Mac安裝)
  2. 建立與目標平臺的x86一切
  3. 單和MonoDevelop的
  4. beta版

的代碼IMO導致崩潰。

HttpWebRequest hwr = WebRequest.Create(turi) as HttpWebRequest; 
string authInfo = user + ":" + password; 
authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo)); 
hwr.Headers["Authorization"] = "Basic " + authInfo; 

hwr.Method = "POST"; 
hwr.ContentType = "text/xml"; 
hwr.ContentLength = encData.Length; 

Stream send = hwr.GetRequestStream(); 
send.Write(encData, 0, encData.Length); 
send.Close(); 
hwr.GetResponse(); 

的MonoDevelop:2.8.5
單聲道:2.10.8

+0

你試過看你的參考嗎?我有必要在MonoDevelop中刪除和讀取對System.Web和其他引用的幾次引用,儘管它們的舊版本具有相同的奇怪錯誤模式。 – 2011-12-30 15:13:15

+0

我用min引用構建了一個縮小的樣本。現在我得到了一個更好的錯誤信息:System.DllNotFoundException:libc.dylib – Ganwell 2011-12-30 15:41:28

+0

啊,那好多了。請嘗試更新所有dylib緩存 - 我不是OSX的傢伙,但在最近更新的系統上構建Gtk#/ Mono應用程序時遇到類似的問題。 – 2011-12-30 15:48:05

回答

0

故障現象:系統庫未找到(System.DllNotFoundException:libc.dylib) 當單產生的.app啓動MonoDevelop的外。

在mono develop創建的包裝腳本中:MyApp.app/Contents/MacOS/MyApp DYLD_FALLBACK_LIBRARY_PATH設置爲不包含默認值。由於空的 DYLD_FALLBACK_LIBRARY_PATH表示默認值,這將刪除默認值。找不到系統 庫。

在我opition行應該是:

export DYLD_FALLBACK_LIBRARY_PATH="$MONO_FRAMEWORK_PATH/lib:$DYLD_FALLBACK_LIBRARY_PATH:$(HOME)/lib:/usr/local/lib:/lib:/usr/lib" 

或支票,如果DYLD_FALLBACK_LIBRARY_PATH是空的就更好了。

我提交了一個錯誤報告:http://bugzilla.xamarin.com/show_bug.cgi?id=2727

+0

該bug已經修復。 MonoDevelop的下一個版本將包含修復程序。 – Ganwell 2012-01-04 06:37:49