首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >System.Windows.Markup.XamlParseException:'CefSharp.Wpf.ChromiumWebBrowser‘抛出异常。内部异常:无法加载CefSharp.Core.dll

System.Windows.Markup.XamlParseException:'CefSharp.Wpf.ChromiumWebBrowser‘抛出异常。内部异常:无法加载CefSharp.Core.dll
EN

Stack Overflow用户
提问于 2017-10-27 09:27:11
回答 2查看 2.4K关注 0票数 2

使用C# XAML Windows应用程序为文档查看器处理CefSharp及其ChromiumWebBrowser。该项目构建良好,没有出现错误,但每当我试图使用铬打开/查看应用程序上的图像时,会弹出一个错误:

System.Windows.Markup.XamlParseException:对与指定绑定约束匹配的CefSharp.Wpf.ChromiumWebBrowser类型的构造函数的调用引发了一个异常内部异常: FileNotFoundException:无法加载文件或程序集“CefSharp.Core.dll”或其依赖项之一

CefSharp.Common包安装在项目中,CefSharp.Wpf包也是如此,我还添加了对项目的引用。

这是我的ChromeControl.xaml:

代码语言:javascript
运行
复制
<UserControl x:Class="Viewer.Chrome.ChromeControl">
    <-- namespaces defined here -->
    <Grid>
        <chrome:ChromiumWebBrowser Name="viewer" RenderOptions.BitmapScalingMode="HighQuality" TextOptions.TextRenderingMode="ClearType" />
    </Grid>
</UserControl>

下面是我在Viewer.Chrome命名空间中的Viewer.Chrome:

代码语言:javascript
运行
复制
public partial class ChromeControl : UserControl {
    public ChromeControl(ViewerWindow viewerWindow) {
            InitializeComponent();
            viewer.RegisterJsObject("chrome", new ChromeDomHelper(viewerWindow, viewer));
            viewer.MenuHandler = new ChromeContextMenu();
    }
    public ChromiumWebBrowser Viewer { get { return viewer; } }
}

我已经发现,在我的文档Viewer.xaml.cs中开始的堆栈跟踪中:

代码语言:javascript
运行
复制
ChromeControl chrome = new ChromeControl(viewerWindow);

已经搜索了很多方法来解决这个问题,但是在我的情况下似乎没有一个有效,任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-30 08:55:29

所以经过这么长时间的挣扎,我终于修好了。这是一个非常愚蠢的错误,我在安装路径上丢失了一些文件,这些文件也在链接中指定:

输出文件描述表(重新分配)

我问了另外一个关于WiX安装程序的问题,基本上在安装路径中有了所有文件之后,我就能够调试它并使它工作起来。

链接到我的另一个问题(WiX):

WiX安装程序项目:无法加载CefSharp.Core.dll,找不到文件

票数 2
EN

Stack Overflow用户

发布于 2017-10-27 09:35:15

更新

如果项目的目标是.NET Framework4.5,则必须将项目的.NET框架更改为4.6

  1. 将名为Nuget.Config的文件添加到解决方案(而不是任何项目)
  2. 将以下内容添加到此文件

3.现在试一试。

原始答案

我以前遇到过这个异常,我认为您需要调用Initialize方法,正如我所记得的那样。

代码语言:javascript
运行
复制
using CefSharp;

protected override void OnStartup(StartupEventArgs e)
{
      base.OnStartup(e);
      Cef.Initialize();
}

看看这个常见问题,会有帮助的。

我在这里总结一下

  1. 为什么我会收到一个关于“无法加载文件或程序集'CefSharp.Core.dll‘或其依赖项之一的错误?找不到指定的模块”。在尝试运行基于CefSharp的应用程序时?它编译成功,但不运行?它在我的开发人员机器上运行,但是当我将它复制到另一台计算机时会抛出一个异常。

这是一个常见的错误,通常如下所示

需要VC++ 2012/2013可再发行包才能在非开发人员计算机上运行CefSharp。有关更多信息,请参见下面的FAQ #6。您可以将所需的dll作为应用程序的一部分。并非所有依赖项都存在于执行文件夹中。CefSharp包括非托管dll和资源,这些资源通过两个.props文件复制到执行文件夹,这些文件在安装NuGet包时包含在项目中。请参阅下面所需文件的列表,确保所需的文件存在。您将应用程序打包为通过安装程序分发,它不会在目标计算机上运行。默认情况下,安装程序不包括非托管资源,您需要手动添加它们。有关ClickOnce,请参见#1314,以获得其他用户已经提出的一些指针和解决方案。在这里可以找到所需文件的列表:输出文件描述(重新分配)

注意:如果您在XAML中初始化WPF控件时得到一个FileNotFoundException,这也适用。

注2:如果从源代码进行编译(不建议使用NuGet包),并且您注意到无法在调试模式下进行编译,但是发布版本可以正常工作,您可能需要修复Visual的版本。这种情况很少发生,在这种情况下,您将得到与缺失的非托管.dll文件完全相同的消息,如上面所示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46971781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档