我有一个部署在客户端计算机上的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
答案 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);
我看到我缺少一些文件。
之后,即使我没有错过任何内容,错误也会不断出现。所以我禁用了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");
}