将CefSharp依赖项放置到特定目录中



我正试图创建一个.net表单应用程序,该应用程序使用cefsharp。但所有的cefsharp依赖项都将被放置并从PC上的特定目录使用(比如C:\Chromium(

我看过一些条目,但几乎所有条目都是古老的,使用的是非常古老的cefsharp版本。

如何使用cefsharp 96.0.142实现此目标?

我已经试过了

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="libs"/>
</assemblyBinding>

但没用。我试图将C:\Chromium目录放入PATHenv变量中,但也不起作用。我总是以结束

系统。IO.FileNotFoundException:"无法加载文件或程序集"CefSharp。WinForms的

就像例外。这看起来是一个很容易的想法,但我真的陷入了困境。

任何想法都会很有帮助。提前感谢

编辑#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目录中的WinForms dll。我的意图不是从项目的子文件夹加载dll。相反,我想把dll放在一个通用目录(比如C:\Chromium(中,我的应用程序可以从这个目录中使用它们。

您是否尝试使用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;
}

相关内容

  • 没有找到相关文章

最新更新