2

我已经下载了 Visual Studio 2013 的 NCrunch 试用版,并试图让它与我的解决方案一起工作,该解决方案构建良好并且具有工作的 MS 单元测试。我能够让 NCrunch 构建所有项目(C# 和 C++ 的混合体),但每个测试都失败并显示以下消息:

程序集初始化/清理失败:System.TypeInitializationException:“IDC_UnitTests.DataCollectorTests”的类型初始化程序引发异常。---> System.IO.FileNotFoundException:无法加载文件或程序集“IDC.dll”或其依赖项之一。指定的模块无法找到。在 IDC_UnitTests.DataCollectorTests..cctor()

每个项目的输出路径都定义为:..\Debug\

看起来 NCrunch 确实没有使用此输出路径,因为 1. 这是我之前看到的相同错误,当时我不小心没有将项目之一的输出路径设置为 ..\Debug 2. 当我查看NCrunch 目录(AppData\Local\NCrunch\18552\69\Debug,我看不到那里的所有项目 dll。不确定 NCrunch 是否组织了 MSBuild 之类的东西,但它似乎很可疑。

有任何想法吗?

谢谢,戴夫

4

1 回答 1

2

NCrunch 为每个引用的 DLL 创建一个单独的“工作区”。例如,如果您有 AssemblyA.Tests.dll 引用 AssemblyA.dll,NCrunch 将在 2 个单独的目录中创建 2 个工作区(在 AppData\Local\NCrunch\ 下),并且甚至能够解决依赖关系如果 DLL 不在同一目录中。

来自文档:“在正常的 VS 构建下,这些资源文件将与引用项目的输出程序集位于同一位置。在 NCrunch 下,情况并非总是如此。” 阅读更多

但是,如果您正在动态加载程序集(即Assembly.Load()),默认情况下,运行时希望 DLL 位于正在执行的程序集旁边,但它不会在那里。在这种情况下,您需要使用选项将引用的程序集复制到工作区来指示 NCrunch 带来依赖项,您可以通过右键单击目标程序集并选择配置选定的组件从 NCrunch 视图中访问它。

在此处输入图像描述

于 2015-08-03T15:54:31.327 回答