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 ;
来源: https://blog.csdn.net/u010085423/article/details/72768053