我使用ExcelDNA创建了一个Excel加载项,其中包含Cefsharp中的Custom task pane浏览器。运行加载项时,会出现以下错误:
无法加载文件或程序集“ CefSharp,版本= 65.0.0.0, 文化=中性,PublicKeyToken = 40c4b6fc221f4138”或其中之一 依赖性。找不到指定的模块。
我该如何解决?
创建包含ChromiumWebBrowser
的用户控件:
[ComVisible(true)]
public class MyBrowser : UserControl
{
ChromiumWebBrowser browser = new ChromiumWebBrowser("www.google.com");
browser.Dock = DockStyle.Fill;
this.Controls.Add(browser);
}
用于创建自定义任务窗格的代码:
private static void CreateCTP()
{
ctp = CustomTaskPaneFactory.CreateCustomTaskPane(typeof(MyBrowser),
"My Custom Task Pane");
//Setting ctp params...
ctp.Visible = true;
}
注意:
unmanaged
资源)添加到bin/Debug
中。答案 0 :(得分:1)
This is a known issue with CefSharp ...它与非默认AppDomains不兼容。您可以在问题“ Multiple AppDomains error "Cannot pass a GCHandle across AppDomains”中看到更多详细信息
Excel-DNA为每个加载项创建一个自定义/非默认AppDomain,而CefSharp不喜欢这样。 Someone tried to fix CefSharp a while ago,但不幸的是,拉取请求was not accepted/merged仍然存在。如果您足够勇敢,则可以下载该pull-request并拥有自己的CefSharp版本,并应用该修复程序。
将CefSharp与Excel-DNA一起使用的解决方法是在默认的AppDomain中以单独的过程运行它。 here和here的操作示例。
您还可以在此讨论中阅读有关此内容的更多信息:“ CefSharp and ExcelDNA”。
当然,鉴于这是CefSharp特有的问题,另一种替代方法是使用其他内容,例如CefGlue或ChromiumFx。