gpt4 book ai didi

c# - 无法为 x64 和 x86 加载文件或程序集 'CefSharp.Wpf;只有一个作品

转载 作者:行者123 更新时间:2023-11-30 16:53:42 25 4
gpt4 key购买 nike

当我运行时,我得到:Could not load file or assembly 'CefSharp.Wpf, Version=41.0.0.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138' 或其依赖项之一。试图加载格式不正确的程序。
这意味着问题是由于 dll 的位数不正确。

在版本 41.0.0 中,nuget 包添加了指向正确路径(x86 文件夹)的 x86 版本的 dll 引用。还有另一个 dll 副本指向属性面板中的空路径。问题是 x64 版本崩溃并出现错误图像错误,因为它引用了 dll 的 x86 版本。

我已经回溯到 39.0.2,CefSharp 对我有用。我有两组 dll,我的应用程序的 x86 和 x64 版本按预期编译和运行。

当我再次升级到 41.0.0 时出现与以前相同的问题。 x64 版本将通过应用程序使用 x86 版本的 dll 进行编译,该 dll 在尝试显示第一个浏览器时会崩溃。我尝试重建所有内容并删除自动复制的 dll,并且在编译期间再次复制 x86 版本。 (至少我相信是这样的

Two Sets of Dlls

然后我删除了引用中的所有 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>

一旦我注释掉 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')" />

这些 .props 文件设置了将正确的 .dlls 复制到构建文件夹所必需的实际 HintPath。我不确定我的项目是如何以错误的路径设置结束的。

关于c# - 无法为 x64 和 x86 加载文件或程序集 'CefSharp.Wpf;只有一个作品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31172045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com