将 CefSharp 依赖项放入特定目录
Posted
技术标签:
【中文标题】将 CefSharp 依赖项放入特定目录【英文标题】:Placing CefSharp dependencies into a specific directory 【发布时间】:2022-01-15 02:48:55 【问题描述】:我正在尝试创建一个使用 cefsharp 的 .net forms 应用程序,但所有 cefsharp 依赖项都将放置并从特定目录使用 在 PC 上(假设是 C:\Chromium)
我看过一些条目,但几乎所有条目都是古老的,并且使用的是非常旧的 cefsharp 版本。
如何使用 cefsharp 96.0.142 实现这一目标?
我已经试过了
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="libs"/>
</assemblyBinding>
但它不起作用。我试图将 C:\Chromium 目录放入 PATH 环境变量,但它也不起作用。我总是以
System.IO.FileNotFoundException: '无法加载文件或程序集'CefSharp.WinForms'
喜欢例外。这看起来很简单,但我真的被卡住了。
任何想法都会非常有帮助。提前致谢
EDIT#1 代码片段
this.chromiumComponent = new CefSharp.WinForms.ChromiumWebBrowser();
this.SuspendLayout();
//
// chromiumComponent
//
this.chromiumComponent.ActivateBrowserOnCreation = false;
this.chromiumComponent.Dock = System.Windows.Forms.DockStyle.Fill;
this.chromiumComponent.Location = new System.Drawing.Point(0, 0);
this.chromiumComponent.Name = "chromiumComponent";
this.chromiumComponent.Size = new System.Drawing.Size(800, 450);
this.chromiumComponent.TabIndex = 0;
我从 C:\Chromium 目录引用 CefSharp、CefSharp.Core、CefSharp.WinForms dll。我的意图不是从项目的子文件夹中加载 dll。而不是这样,我想将 dll 放到一个通用目录(如 C:\Chromium)和我的应用程序以从该目录中使用它们。
【问题讨论】:
探测 privatePath 仅适用于子/子文件夹。您究竟是如何尝试从 c:\chromium 加载的?你的代码是什么样的? 查看 github.com/cefsharp/CefSharp/discussions/3371 以了解探索 privatePath 示例 @amaitland 我的意图不是从项目的子文件夹中加载 dll。我想将它们放在一个目录中,并让我的应用程序从该目录加载 dll。谢谢 【参考方案1】:您是否尝试使用AppDomain.AssemblyResolve 事件?如果应用程序输出文件夹中缺少某些程序集,则会发生AssemblyResolve
事件,您可以从其他文件夹加载程序集。
[STAThread]
static void Main()
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
...
private static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
var requestedName = new AssemblyName(args.Name);
var chromiumDirectory = @"C:\\C:\Chromium";
var assemblyFilename = Path.Combine(chromiumDirectory, requestedName.Name + ".dll");
if (File.Exists(assemblyFilename))
return Assembly.LoadFrom(assemblyFilename);
return null;
【讨论】:
它就像一个魅力......谢谢以上是关于将 CefSharp 依赖项放入特定目录的主要内容,如果未能解决你的问题,请参考以下文章
无法加载文件或程序集“CefSharp.dll”或其依赖项之一
未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项
win 8系统:System.IO.FileNotFoundException: 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项。找不到指定的模块