Kie*_*goc 19 c# winforms cefsharp
我正在尝试使用CefSharp将我的网络应用加载到winfoms中.我添加了2个dll文件:CefSharp.dll和CefSharp.WinForms到引用中,并通过添加现有项目将2个dll文件icudt.dll和libcef.dll添加到我的项目中.

这是表单中的代码
public WebView web_view;
public Form1()
{
InitializeComponent();
web_view = new WebView("http://localhost:8084/wsmill",new CefSharp.BrowserSettings());
web_view.Dock = DockStyle.Fill;
toolStripContainer1.ContentPanel.Controls.Add(web_view);
CefSharp.CEF.Initialize(new Settings());
}
Run Code Online (Sandbox Code Playgroud)
运行应用程序时,我收到此错误
WindowsFormsApplication1.exe中发生未处理的"System.IO.FileLoadException"类型的异常附加信息:无法加载文件或程序集"CefSharp.dll"或其依赖项之一.动态链接库(DLL)初始化例程失败.(HRESULT异常:0x8007045A)
所以任何了解这一点的人都请帮助我,谢谢
Toa*_*yen 23
你需要把这些文件
libcef.dll
icudtl.dat
CefSharp.dll
CefSharp.WinForms.dll
Run Code Online (Sandbox Code Playgroud)
进入你的bin\Debug(或你的配置的bin\Release)
并且请不要忘记安装Visual C++ 2012 Redistribution(自版本43以来的Visual C++ 2013 Redistributable),如果您不这样做,Visual Studio将始终显示异常,告诉您找不到CefSharp.dll,尽管您已经拥有它!
希望这有帮助.
这是一个常见错误,原因是输出目录中不存在所有文件(bin\Debug或bin\Release,具体取决于您在Visual Studio中运行的配置).CefSharp.dll是一个基于.NET的DLL,它依赖于其他.dll文件,而这些文件又依赖于其他.dll和其他文件......
以下是所需最低文件的列表:
这是一个常见问题,因此在常见问题解答中提到,问题3.
@AcccessDenied是对的.文件需要出现在输出文件夹中(bin\Debug或bin\Release).实现此目的的一种方法是使用Post-Build可在Visual Studio中的项目设置下设置的操作.
您还可以在.csproj文件中设置post-build ,有点像这样:
<Target Name="AfterBuild">
<ItemGroup>
<CefBinaries Include="$(SolutionDir)CEF\$(UnmanagedPlatform)\*.*" />
<LocaleFiles Include="$(SolutionDir)CEF\locales\*.*" />
<SubProcessFiles Include="$(SolutionDir)$(UnmanagedPlatform)\$(Configuration)\CefSharp.BrowserSubprocess.exe" />
</ItemGroup>
<Copy SourceFiles="@(CefBinaries)" DestinationFolder="$(TargetDir)" />
<Copy SourceFiles="@(LocaleFiles)" DestinationFolder="$(TargetDir)locales" />
<Copy SourceFiles="@(SubProcessFiles)" DestinationFolder="$(TargetDir)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
(此示例取自CefSharp源代码CefSharp3分支中的CefSharp.Wpf.Example项目.确切的文件位置可能因您的情况而异,尤其是在使用CefSharp1时,请根据需要进行调整以确保正确复制文件. )
我不建议把东西放在bin\Debug或bin\Release中,并使用它将它添加到解决方案中Copy Always.这对我来说感觉像是一块垃圾.
我刚刚遇到了这个问题,我做了以下事情:
在启动期间添加了以下代码以确保所有依赖项都存在
string dir = AppDomain.CurrentDomain.BaseDirectory;
var missingDeps = CefSharp.DependencyChecker.CheckDependencies(true, false, dir, string.Empty,
Path.Combine(dir, "CefSharp.BrowserSubprocess.exe"));
if (missingDeps?.Count > 0)
throw new InvalidOperationException("Missing components:\r\n " + string.Join("\r\n ", missingDeps));
// ReSharper disable once UnusedVariable
var browser = new CefSharp.Wpf.ChromiumWebBrowser(); //test, if browser can be instantiated
Run Code Online (Sandbox Code Playgroud)CefSharp.DependencyChecker没有报告任何遗漏,但一旦我打电话给新CefSharp.Wpf.ChromiumWebBrowser()的异常发生.
我使用ILSpy检查了所有ms.net CEF dll,发现其中一些DLL也位于GAC中.我一从GAC删除它们就一切正常!