2011-12-30 4 views
0

HTTP POST를 통해 오류보고를 제출하는 방법을 작성했습니다. OSX-Lion과 MonoDevelop를 실행합니다. 코드는 MonoDevelop에서 응용 프로그램을 호출 할 때 작동합니다. .app을 실행하면 예외가 throw됩니다.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 

지금은 catch를 통하지 않고 직접 Submit 메서드를 호출합니다. 디버거가 연결될 때 작동하기 때문에 좌초가됩니다. 지금까지 시도하는 것 :

  1. 빌드 모노 응용 프로그램 번들 (맥 설치 만들기)
  2. 플랫폼 대상 86와 모든 빌드
  3. 모노 및 MonoDevelop
  4. 의 베타 버전

코드가 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 및 다른 사람들에 대한 참조를 제거하고 읽을 필요성이있었습니다. –

+0

나는 min references가있는 축소 된 샘플을 만들었습니다. 이제 더 나은 오류 메시지가 나타납니다. System.DllNotFoundException : libc.dylib – Ganwell

+0

아, 그게 훨씬 낫습니다. 모든 dylib 캐시를 업데이트하십시오. 저는 OSX 사람이 아니지만, 최근에 업데이트 된 시스템에서 Gtk #/Mono 응용 프로그램을 빌드 할 때 비슷한 문제가있었습니다. –

답변

0

증상 : 시스템 라이브러리를 찾을 수 없습니다 : 모노 만든 .APP이 MonoDevelop 외부에서 시작된다 (System.DllNotFoundException libc.dylib) .

모노로 만든 래퍼 스크립트에서 : 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

버그가 이미 수정되었습니다. MonoDevelop의 다음 버전에는 수정 사항이 포함되어 있습니다. – Ganwell