CefSharp常見問題?

1.無法加載文件或程序集CefSharp.Core.dll”或它的一個依賴。指定的模塊找不到。

這是一個常見的​​錯誤,通常是下列之一
1、VC ++ 2012/2013再發行組件包需要以非開發機器上運行CefSharp。請參閱以下FAQ#6獲取更多信息。您可以包括所需的DLL作爲應用程序的一部分。
2、不是所有的依賴關係存在於執行的文件夾。 CefSharp包括非託管的dll和資源,這些是通過當您安裝的NuGet包,它們包含在你的項目中的兩個.props文件複製到文件夾執行。見所需文件的列表的下方,確保所需的文件都存在。
3、你可以通過安裝程序打包爲分發的應用程序,它不會在目標機器上運行。安裝不包括在默認情況下的非託管資源,你需要手動添加。對於ClickOnce的,請參閱#1314對一些指針和解決方案的其他用戶紛紛拿出。
所需文件的列表可以在這裏找到:輸出文件說明(再分配)

注:如果您在初始化XAML的WPF控件時得到一個FileNotFoundException異常這也適用。

2.我如何包括在目標應用程序的Visual Studio的C ++ 2012/2013再發行?

CefSharp需要VC ++運行時。你必須安裝/包括這與你的應用程序的幾個選項:
你可以在你希望運行CefSharp基於應用程序的每臺計算機上安裝VC ++。一旦安裝更新就可以通過Windows Update進行管理。
您可以設置在Visual Studio C ++再分發作爲安裝程序的先決條件(即的ClickOnce或WiX的工具集)
通過複製到您的項目在此文件夾(只有當你安裝了Visual Studio中的匹配版本存在)的內容:
#對於VC ++ 2012(86) C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\redist\x86\Microsoft.VC110.CRT #對於VC ++ 2012(64) C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\redist\x64\Microsoft.VC110.CRT #對於VC ++ 2013(86) C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x86\Microsoft.VC120.CRT #對於VC ++ 2013(64) C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x64\Microsoft.VC120.CRT 隨着第三方法,你將不再需要爲前提的Visual C ++運行時2012/2013文件安裝到客戶端。就目前的計劃是留在VC2013官方CefSharp二進制版本。可行時,我們可能會切換到VC2015。如果你從源代碼構建自己的你部署的過程中必須與您構建環境。對於官方的NuGet版本的詳細信息請參見發佈分支表。

欲瞭解更多信息,請參閱重新分發的Visual C ++文件MSDN上。要下載,請訪問Visual Studio的C ++ 2012/2013再發行

注意從源代碼構建確保你在Release模式部署到沒有安裝Visual Studio機時編譯。 VISUAL C ++使用一套不同的調試和發佈版本的運行時庫。調試運行時庫僅安裝有Visual Studio中。如果你使用他們已經建在釋放模式官方的NuGet軟件包,您可以隨後建立在調試模式下您的應用程序,因爲只有在Visual C ++項目需要在Release模式下進行編譯。

3.在哪裏CefSharp3二進制文件?

CefSharp3被釋放的NuGet包。 請參閱https://github.com/cefsharp/CefSharp/blob/master/README.md#nuget-packages最新的穩定和預發佈版本。

對於使用的NuGet包一個很簡單的例子項目,請參閱CefSharp.MinimalExample庫。克隆它/如果你想要的CefSharp3如何使用一個非常小的和簡單的例子下載源。

請注意:目標平臺
使用這些包時,您必須選擇x86或x64。如果選擇值爲anycpu的神奇的NuGet不會目前的工作。見步驟來這裏配置的解決方案。

4.你是如何處理在C#中Javascript事件?

public class BoundObject  
{  
    public void OnFrameLoadEnd (object sender, FrameLoadEndEventArgs e)  
    {  
      if(e.Frame.IsMain)  
      {  
        browser.ExecuteScriptAsync(@"            
document.body.onmouseup = function()            
{              
    bound.onSelected(window.getSelection().toString());            
}");  
      }  
    }  

    public void OnSelected(string selected)  
    {  
        MessageBox.Show("The user selected some text [" + selected + "]");  
    }  
}  
// ...  
// After your ChromiumWebBrowser has been instantiated (for WPF directly after `InitializeComponent();` in the control   constructor).var obj = new BoundObject();  
browser.RegisterJsObject("bound", obj);  
browser.FrameLoadEnd += obj.OnFrameLoadEnd ;  
發佈了100 篇原創文章 · 獲贊 25 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章