2015-07-20 49 views
3

我正在使用SolidEdge社區AddIn爲Solid Edge編程AddIn。使用此AddIn,應顯示包含網站的EdgeBar。AddIn中的CEFSharp - 「無法跨AppDomains傳遞GCHandle」

因爲我不想使用標準的Windows窗體WebBrowser控件(它僅使用了IE渲染引擎),我嘗試使用鉻嵌入式框架其.NET綁定CEFSharphttps://github.com/cefsharp/CefSharp)。

當創建新的Windows窗體應用程序時,嵌入CEFSharp控件就可以工作。但是,當我在我的外接程序代碼中嵌入它,我收到此錯誤之後開始的Solid Edge與外接程序啓動和程序崩潰後:

類型「System.ArgumentException」未處理的異常出現在mscorlib.dll

其他信息:無法跨AppDomains傳遞GCHandle。

我發現,應對在AppDomain-問題(https://github.com/cefsharp/CefSharp/issues/351)類似CEFSharp的問題,但我真的沒有看到我的問題的解決方案。

(注:目標框架是的.NET Framework 4.5輸出類型類庫我使用Visual Studio 2013,編程語言是C#)。

+0

正如你所讀過的限制是與'VC++實現'。您可以嘗試'RedGate.AppHost',如 https://github.com/cefsharp/CefSharp/issues/351#issuecomment-71495187中所述,或者您可以使用基於'Cef'框架的'P/Invoke'之一.Net – amaitland

+0

這是GCHandle.FromIntPtr()引發的異常。通常由C++/CLI適配器中的gcroot <>模板包裝。堆腐敗是迄今爲止最常見的原因,當IntPtr受到攻擊時,節目結束。很難在託管應用程序中進行調試,因此無法設置數據斷點。 CEFSharp是「解決一個問題,增加三個難題」的解決方案。 –

回答

4

這個拉請求(https://github.com/cefsharp/CefSharp/pull/1556)完全解決了我的問題。因爲它還沒有到達CefSharp的主人,所以我自己構建它,並且一切正常:-)

讓我們希望這將在即將發佈的分支中,因此沒有人會再處理這個問題。

+0

你有沒有嘗試在Office(Excel-AddIn)上測試它?我嘗試了Asher在'appdomainsafe'中的改變,並在本地構建。然後,我將DLL(在'/ WinForms.Example/bin/x64/Debug'中)複製到我的項目'Debug'文件夾中。但我仍然得到這個錯誤,http://imgur.com/8sTBKTQ – Sam007

+0

不幸的是,我沒有嘗試它與辦公室: -/ – muellermarkus

+0

你能告訴我你是如何建立它?這個過程? – Sam007