C# CefSharp核心运行时dll格式不正确

C# CefSharp核心运行时dll格式不正确,c#,cefsharp,cefsharp.offscreen,C#,Cefsharp,Cefsharp.offscreen,我得到System.IO.FileNotFoundException:“无法加载文件或程序集”CefSharp.Core.Runtime,版本=89.0.170.0,区域性=中性,PublicKeyToken=40c4b6fc221f4138“。系统找不到指定的文件。“该文件与其他DLL一起存在于bin目录中 项目设置: 以netcore 3.1为目标的控制台应用程序使用以netstandard 2.0为目标的类库,该类库加载到使用netcore应用程序3.1构建的驱动程序中,netcore应用

我得到
System.IO.FileNotFoundException:“无法加载文件或程序集”CefSharp.Core.Runtime,版本=89.0.170.0,区域性=中性,PublicKeyToken=40c4b6fc221f4138“。系统找不到指定的文件。“
该文件与其他DLL一起存在于bin目录中

项目设置:

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

当逐步通过调试器时,我发现我无法加载CefSharp.Core所依赖的CefSharp.Runtime.dll。试图加载
格式不正确的程序。(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-垃圾箱的内容及其来源

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

CefSharp.Core.dll

CefSharp.dll

CefSharp.Core.Runtime.dll

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

CefSharp.OffScreen.dll

编辑3-更新的bin


不幸的是,在.Net Core 3.1下加载VC++dll时,BadImageFormatException会产生误导。事实上,这可能意味着很多事情。任何加载CefSharp.Core.Runtime.dll的尝试因任何原因失败,都会导致BadImageFormatException。如果CefSharp.Core.Runtime.dll无法加载libcef.dll,您还将获得相同的BadImageFormatException。您是否有libcef.dll和与CefSharp.Core.Runtime.dll在同一目录中列出的所有其他bin/pak/dll文件?谢谢您的回复,我缺少一些在我的nuget文件夹中找不到的文件。我在垃圾箱中添加了当前DLL的图片。必需部分中的icudtk.dat、snapshotblob.bin、v8_context_snapshot.bin。我在哪里能找到这些?包含x64的所有CEF资源。您是否手动复制Nuget软件包中的文件?在.Net Core下运行的CefSharp.Offscreen软件包实际上是.Net 4.5.2 DLL。有一套单独的.Net Core/.Net 5.0包可用。请参阅这些软件包中的版本89。不保证它能解决您的问题,我需要更多的细节来了解发生了什么。首先,当您使用PackageReference时,您应该只包括顶级软件包,在本例中为CefSharp.OffScreen。如果您的所有项目都在同一个解决方案中,并且您的项目文件中有一个ProjectReference,那么应该将依赖项添加到您的项目中。如果项目之间没有引用,则需要手动复制文件。在您的obj文件夹中查看msbuild生成的文件,它们将使您更好地了解所包含的引用,我记不清确切的文件名。