3

语境

我是一个带有 C# 和 C++/CLI dll 的应用程序。C++/CLI dll 引用纯 C++ .dll,例如 boost 库。

测试被编译到 Tests.dll 中,它与所有其他二进制文件一起放在 $(SolutionDir)\bin\Debug 中。

问题

尝试使用 Visual Studio 2012 运行 xunit 测试失败,并出现以下错误:

xUnit.net: Exception discovering tests from C:\Dev\xu-tests\bin\Debug\Tests.dll: 
> System.IO.FileNotFoundException: Could not load file or assembly 'ManagedCpp.DLL' 
> or one of its dependencies. The specified module could not be found.
> File name: 'ManagedCpp.DLL'

我可以在 Visual Studio 之外以两种方式重现该问题:

  • 尝试从该目录外部运行控制台运行程序时

    ..(长路径)..\xunit.console.clr4.exe Debug\Tests.dll

  • 尝试从其安装目录运行 GUI 运行器时。

但是,当我使用控制台进入 bin\Debug 目录,然后从那里启动控制台或 GUI 运行程序时,我可以让它工作。

这让我相信问题在于 VS2012 尝试运行单元测试而不使用 bin\Debug 目录作为工作目录。

问题

如何将运行 xunit 的工作目录设置为 $(OutDir) (或任何特定目录)?

4

0 回答 0