【发布时间】:2020-06-29 06:29:32
【问题描述】:
在构建 Winform 应用程序时遇到问题。在构建运行时不断收到无法加载文件或程序集 CefSharp.Core 错误消息。我在调试模式下没有遇到同样的问题。
CefSharp 版本是 79.1.360。
项目的基本结构是:
- 启动项目
- 组件项目(自定义 Chromium 浏览器用户控件所在的位置)
- UI 项目
平台目标是 AnyCPU。
我已经按照本网站的instructions 安装了 Cefsharp:
对于项目设置,我在 Startup 项目和 Component 项目中都将 CefSharpAnyCpuSupport 标记设置为 true。
在启动项目中勾选了首选 32 位。对于其他项目,它是只读的。
组件和启动项目的 App.config 已按照说明进行了修改。
我注意到出现在 UI 项目包文件夹中的 nuget 包。
组件项目中的所有引用都将“复制到输出”设置为“始终复制”。有 3 个参考(CefSharp、CefSharp.Core、CefSharp.Winforms)
并尝试通过执行以下操作来解决此问题:
- 卸载并重新安装 CefSharp
- 尝试使用cefsharp github faq解决。
- 经过测试,UI 项目具有所有相同的应用设置和引用,其他项目也是如此。
所需的 dll 都出现在 bin 文件夹中,用于调试和发布。每台机器(在其中创建构建和测试实际程序)都在 2013/2015 年为 x64 和 x86 安装了正确的 Visual Studio c++ 可再发行组件。
有没有其他人遇到过类似的问题并解决了这个问题?我已经搜索了有关此问题的所有以前的 Stackoverflow 查询,并且没有一个具有适用于该应用程序的解决方案。不确定是否存在问题,因为我们使用 InstallShield 进行构建/发布,我没有注意到其他人在使用。
如果您需要任何进一步的信息来提供帮助,请告诉我。谢谢,
更新:构建后的 Bin 文件夹内容
【问题讨论】:
-
您不应该将引用属性更改为始终复制,这会破坏 AnyCpu。 install shield 与该问题究竟有什么关系?您在开发机器上看到问题了吗?确保您可以将部署绑定到目标机器。
-
我已经完成了有和没有副本的构建,始终设置为 true。这是其他门票的解决方案。两种选择都不起作用。不确定绑定部署是什么意思。基本上在创建补丁时使用 install shield 我们切换到发布模式并重新构建,它会创建一个 .msi 文件以安装在其他机器上。
-
不要总是修改副本,它只会增加你看到的问题。 CefSharp 依赖项只会被复制到直接引用它们的项目的 bin 文件夹中,并且它适用于直接引用引用 CefSharp 的项目的项目,这是 msbuild 限制。确保 libcef.dll 以及所有 bin 和 pak 文件都存在,我无法链接到 GitHub 上列出它们的参考,因为 GitHub 似乎已关闭。
-
我已更新问题以包含 bin 文件夹内容的屏幕截图。它包含在底部。我已经检查了 Github FAQ 以检查所需的文件是否存在。相同的文件在 Release\bin\x86 和 x64 文件夹中
-
请回答我的其他问题。您在开发机器上看到问题了吗?确保可以将 deploy 绑定到目标机器
标签: c# winforms runtime-error cefsharp