当我运行时,我得到:Could not load file or assembly 'CefSharp.Wpf, Version=41.0.0.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138' or one of its dependencies. An attempt was made to load a program with an incorrect format.
这意味着问题是由于 dll 的位数不正确。
在版本 41.0.0 中,nuget 包添加了指向正确路径(x86 文件夹)的 x86 版本的 dll 引用。还有另一个 dll 副本指向属性面板中的空路径。问题是 x64 版本因错误图像错误而崩溃,因为它引用了 x86 版本的 dll。
我已经回溯到 39.0.2 并且 CefSharp 对我有用。我有两组 dll,其中 x86 和 x64 版本的应用程序按预期编译和运行。
当我再次升级到 41.0.0 和以前一样的问题。尽管应用程序使用 x86 版本的 dll,但在尝试显示第一个浏览器时会崩溃,但 x64 版本将编译。我尝试重建所有并删除自动复制的 dll,并且在编译期间再次复制 x86 版本。(至少我相信是这种情况

然后我删除了引用中的所有 dll 并手动添加了 x64 版本。编译和执行与 39.02 版本的 CefSharp.WPF 一样正常工作。
如何在无需手动更改 dll 路径的情况下让两个版本都能正常工作?
另一个注意事项:我可以在设置为 x64 时使用 nuget,这与上述问题相反。现在 x64 可以工作,而 x86 不行。dll 的路径现在是 x64 文件夹。
事实证明,经过多次磨难和痛苦,我发现我的.csproj. 它们以某种方式被定义为 x64。
<Reference Include="CefSharp, Version=41.0.0.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion>
<!--<HintPath>..\packages\CefSharp.Common.41.0.0\CefSharp\x64\CefSharp.dll</HintPath>-->
</Reference>
<Reference Include="CefSharp.Core, Version=41.0.0.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion>
<!--<HintPath>..\packages\CefSharp.Common.41.0.0\CefSharp\x64\CefSharp.Core.dll</HintPath>-->
</Reference>
<Reference Include="CefSharp.Wpf, Version=41.0.0.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<!--<HintPath>..\packages\CefSharp.Wpf.41.0.0\CefSharp\x64\CefSharp.Wpf.dll</HintPath>-->
</Reference>
Run Code Online (Sandbox Code Playgroud)
当我注释掉 后HintPath,它就开始正常工作。请注意,实际引用是由Import项目顶部的 定义的。
<Import Project="..\packages\CefSharp.Wpf.41.0.0\build\CefSharp.Wpf.props" Condition="Exists('..\packages\CefSharp.Wpf.41.0.0\build\CefSharp.Wpf.props')" />
<Import Project="..\packages\CefSharp.Common.41.0.0\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.41.0.0\build\CefSharp.Common.props')" />
Run Code Online (Sandbox Code Playgroud)
这些文件设置了将正确的内容复制到构建文件夹所需的.props实际信息。我不确定我的项目是如何以错误的路径结束的。 HintPath.dlls