我建议更新您的 Moles 测试以使用Fakes and Stubs(Moles 的发布版本)。 Fakes 和 Stubs包含在 .NET 4.5 和 C# 5 中,并受 Visual Studio 2012 支持。转换为 Fakes 并不困难,因为它与 Moles 基本相同。
我打算将您指向@Peter 发布的同一篇文章。(好电话,彼得!)所描述的解决方法应该可以解决您的问题。
我认为问题在于 Moles 是为 3.0-4.0 .NET 框架设计的。4.5 .NET Framework 集成了该版本的一些新功能,例如新的异步支持。Moles 没有工具来处理这种新的异步范例,并且会错误地检测代码。为了防止此类问题,编译器通常包含受支持的版本开关,并且根本不会编译未来版本的代码。好像是这样,这里。我不记得了,但检查 Moles 输出窗口;它可能会报告这些命名空间没有编译到一个被合并的程序集中。
关于升级...
Visual Studio 2012 更新 2为高级 SKU 添加了假货支持。
我建议升级,因为:
- Moles 框架从未得到官方支持
- 痣不是一个完整的产品
- Moles 将不会收到未来的更新(例如导致此问题的更新)
如果您是软件公司、开发商店或 IT 部门的员工,您应该能够轻松地向您的工作经理证明 VS2012 Premium MSDN 订阅 SKU 的费用是合理的。如果您为自己付费而不是定期为合同工作计费,或者购买许可证而不是 MSDN 订阅,您可能会发现这是一个昂贵的选择。