我正试图创建一个.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;
}