【发布时间】:2018-07-16 09:43:27
【问题描述】:
我正在使用 CefSarp 在应用程序上使用 XUnit 进行一些测试。
但测试正在崩溃,但有异常:
System.IO.FileNotFoundException:无法加载文件或程序集“CefSharp,版本=55.0.0.0,Culture=neutral,PublicKeyToken=40c4b6fc221f4138”或其依赖项之一。系统找不到指定的文件。
在 CefSharp.CefSharpApp.OnBeforeChildProcessLaunch(CefSharpApp* , CefRefPtr* commandLine)
在 Xunit 问题跟踪器 (https://github.com/xunit/xunit/issues/4) 上,解决方法是将 shadowCopy 选项设置为 false。但这对我不起作用。
CefSharp 有一些文件需要成为下一个可执行文件 (https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#Runtime_dependencies)。所有这些文件都存在于 bin 文件夹中,当我使用 System.IO.Directory.GetCurrentDirectory() 检查当前目录时,这是正确的文件夹。
我尝试使用 Kernel32 中的 SetDllDirectory 添加 bin 文件夹,但没有任何改变。
我还尝试使用Assembly.LoadFile() 手动加载程序集。此调用成功,但稍后当 cef 初始化时,异常仍然发生。所以问题可能不是找到程序集本身,而是找到 CefSharp 所需的文件。
我应该将所有 CefSharp 文件放在哪里以便 XUnit 找到它们?我对集成在 VisualStudio 中的 Xunit 测试和 Xunit 控制台有同样的问题。
编辑:
问题已解决(请参阅 anwser)。除了使用 SpecFlow 创建的测试之外,所有测试都通过了。
它抛出 Could not load file or assembly 但这次是 CefSharp.Core。
【问题讨论】:
-
你能分享你的项目/存储库吗?
-
我无法共享存储库。这是我的公司代码。我将尝试使用重现问题所需的最少代码创建一个项目。
-
@robi-y 我添加了一个指向重现问题的存储库的链接
-
它在我的机器上运行 :-),VS Community 2017
-
CefSharp 源码有一个 xunit 测试项目,你可以参考一下。