无法找到所需的Cef / CefSharp依赖项

时间:2016-12-25 15:31:51

标签: c# 64-bit console-application chromium-embedded cefsharp

我有一个部署在客户端计算机上的C#控制台应用程序。在客户端计算机中部署时,我得到System.TypeInitializationException。

在debug.log中,我收到以下错误:

Unable to locate required Cef/CefSharp dependencies:
Missing:CefSharp.BrowserSubprocess.exe
Missing:CefSharp.BrowserSubprocess.Core.dll
Missing:CefSharp.Core.dll
Missing:CefSharp.dll
Missing:icudtl.dat
Missing:libcef.dll
Executing Assembly Path:C:\myapp

问题是所有文件都存在于C:\ myapp目录中(如此处所指定)。因此,我不确定为什么这些文件没有被加载。还包括c:\ myapp目录中的msvcp120.dll,msvcr120.dll,vccorlib120.dll

3 个答案:

答案 0 :(得分:7)

和很多人一样,我按照官方Quick Start article中的步骤来设置"任何CPU"配置和我在performDependencyCheck打开时遇到缺少依赖关系的问题。

这是因为文章实际上是不完整的!

对于"任何CPU"配置工作,你需要按照Feature Request - Add AnyCPU Support #1714中的所有步骤(特别是最后一个!):

  
      
  • 添加<probing privatePath="x86"/&gt; app.config
  • 中概述的Prefer 32bit   
  • 在项目属性中设置settings.BrowserSubprocessPath = @"x86\CefSharp.BrowserSubprocess.exe";,请参阅https://msdn.microsoft.com/en-us/library/4191fzwb.aspx   对于某些背景
  •   
  • 致电时设置Cef.Initialize   [STAThread] public static void Main() { var settings = new CefSettings(); settings.BrowserSubprocessPath = @"x86\CefSharp.BrowserSubprocess.exe"; Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null); var browser = new BrowserForm(); Application.Run(browser); }
  •   
     

以下示例:

performDependencyCheck: true

注意:使用此代码时,我仍然建议您使用const person = sequelizeClient.define('person', { name: { type: DataTypes.STRING, allowNull: false } }, { hooks: { beforeCount(options) { options.raw = true; } } }); const base = sequelizeClient.define('base', { id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true }, createdBy: { type: Sequelize.INTEGER, }, updatedBy: { type: Sequelize.INTEGER, }, deletedBy: { type: Sequelize.INTEGER, } }, { hooks: { beforeCount(options) { options.raw = true; } } }); ,因为它现在只报告真正的错误。

答案 1 :(得分:1)

我有同样的问题。首先我看到Cef.Initialize()函数不起作用,所以我启用了performDependencyCheck选项,如下所示:

Cef.Initialize(BrowserSettings, performDependencyCheck: true, browserProcessHandler: null);

(根据这个例子https://github.com/cefsharp/CefSharp.MinimalExample/blob/master/CefSharp.MinimalExample.OffScreen/Program.cs

我看到缺少一些文件。

之后,即使我没有错过任何内容,错误也会不断出现。所以我禁用了performDependencyCheck选项并且它有效。(像这样:

Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);

希望它会对你有所帮助。

答案 2 :(得分:1)

我今天遇到同样的问题。

我的CEFSharp程序仅在打开我的程序时可以正常工作,但是在打开关联文件时失败。

当我双击打开一个关联格式文件(例如:JPG格式文件)时,由于“无法找到所需的Cef / CefSharp依赖项”错误,应用程序启动失败。

我试图设置“ performDependencyCheck:false”,当右键单击选择“我的程序”以打开文件时,它可以工作。但是当双击jpeg文件时,错误仍然存​​在。

然后我尝试将当前目录设置为执行文件路径,它看起来可行,我认为此问题的根本原因有时与当前工作文件夹有关。

    private static void Main(string[] args)
    {
        try
        {
            string exeDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            if (exeDir != null)
            {
                Directory.SetCurrentDirectory(exeDir);
            }

            if (!Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: browserProcessHandler))
            {
                throw new Exception("Unable to Initialize Cef");
            }