2

System.IO.FileNotFoundException: 'Could not load file or assembly 'CefSharp.Core.Runtime, Version=89.0.170.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138'. The system cannot find the file specified.'将文件与其他 DLL 一起放在 bin 目录中。

项目设立:

针对 netcore 3.1 的控制台应用程序使用针对 netstandard 2.0 的类库,该类库加载到使用 netcore app 3.1 构建的驱动程序中,该驱动程序具有 CefSharp.Offscreen 89.0.170

单步执行调试器时,我看到我无法加载 CefSharp.Core 所依赖的 CefSharp.Core.Runtime.dll。试图加载一个带有incorrect format. (0x8007000B).

dll 取自 cef nuget 包的 x64 文件夹,并反映在 csproj 中。

C:\Users\{user}\.nuget\packages\cefsharp.common.netcore\89.0.170\runtimes\win-x64\lib\netcoreapp3.1

我不知道是什么原因造成的,有没有人对在哪里寻找以及可能是什么原因有任何建议?

编辑 1——澄清代码

private static System.Reflection.Assembly Resolver(object sender, ResolveEventArgs args)
{
    if (!args.Name.StartsWith("CefSharp.Core.Runtime")) return null;
    string assemblyName = args.Name.Split(new[] {','}, 2)[0] + ".dll";
    string archSpecificPath = $"E:\\myProject\\bin\\Debug\\netcoreapp3.1\\{assemblyName}";

    // this returns true
    var exists = File.Exists(archSpecificPath);
    try
    {
        return System.Reflection.Assembly.LoadFile(archSpecificPath);
    }
    catch(Exception e)
    {
        // e's value: "An attempt was made to load a program with an incorrect format. (0x8007000B)"
        return null;
    }

编辑 2 - bin 的内容以及它们的来源

包\cefsharp.common.netcore\89.0.170\runtimes\win-x64\lib\netcoreapp3.1

CefSharp.Core.dll

CefSharp.dll

CefSharp.Core.Runtime.dll

包\cefsharp.offscreen.netcore\89.0.170\lib\netcoreapp3.1

CefSharp.OffScreen.dll

编辑 3 - 更新的 bin

在此处输入图像描述

4

0 回答 0