使用C# XAML Windows应用程序为文档查看器处理CefSharp及其ChromiumWebBrowser。该项目构建良好,没有出现错误,但每当我试图使用铬打开/查看应用程序上的图像时,会弹出一个错误:
System.Windows.Markup.XamlParseException:对与指定绑定约束匹配的CefSharp.Wpf.ChromiumWebBrowser类型的构造函数的调用引发了一个异常。 内部异常: FileNotFoundException:无法加载文件或程序集“CefSharp.Core.dll”或其依赖项之一
CefSharp.Common包安装在项目中,CefSharp.Wpf包也是如此,我还添加了对项目的引用。
这是我的ChromeControl.xaml:
<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:
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中开始的堆栈跟踪中:
ChromeControl chrome = new ChromeControl(viewerWindow);
已经搜索了很多方法来解决这个问题,但是在我的情况下似乎没有一个有效,任何帮助都是非常感谢的。
发布于 2017-10-30 08:55:29
所以经过这么长时间的挣扎,我终于修好了。这是一个非常愚蠢的错误,我在安装路径上丢失了一些文件,这些文件也在链接中指定:
我问了另外一个关于WiX安装程序的问题,基本上在安装路径中有了所有文件之后,我就能够调试它并使它工作起来。
链接到我的另一个问题(WiX):
发布于 2017-10-27 09:35:15
更新
如果项目的目标是.NET Framework4.5,则必须将项目的.NET框架更改为4.6
Nuget.Config
的文件添加到解决方案(而不是任何项目)3.现在试一试。
原始答案
我以前遇到过这个异常,我认为您需要调用Initialize
方法,正如我所记得的那样。
using CefSharp;
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Cef.Initialize();
}
看看这个常见问题,会有帮助的。
我在这里总结一下
这是一个常见的错误,通常如下所示
需要VC++ 2012/2013可再发行包才能在非开发人员计算机上运行CefSharp。有关更多信息,请参见下面的FAQ #6。您可以将所需的dll作为应用程序的一部分。并非所有依赖项都存在于执行文件夹中。CefSharp包括非托管dll和资源,这些资源通过两个.props文件复制到执行文件夹,这些文件在安装NuGet包时包含在项目中。请参阅下面所需文件的列表,确保所需的文件存在。您将应用程序打包为通过安装程序分发,它不会在目标计算机上运行。默认情况下,安装程序不包括非托管资源,您需要手动添加它们。有关ClickOnce,请参见#1314,以获得其他用户已经提出的一些指针和解决方案。在这里可以找到所需文件的列表:输出文件描述(重新分配)
注意:如果您在XAML中初始化WPF控件时得到一个FileNotFoundException,这也适用。
注2:如果从源代码进行编译(不建议使用NuGet包),并且您注意到无法在调试模式下进行编译,但是发布版本可以正常工作,您可能需要修复Visual的版本。这种情况很少发生,在这种情况下,您将得到与缺失的非托管.dll文件完全相同的消息,如上面所示。
https://stackoverflow.com/questions/46971781
复制相似问题