11

我正在尝试编译在 Visual Studio 2010 中开发的现有项目(目标 .NET4),现在正在测试迁移到 VS2012。

当我用 moles 编译现有项目时,我经常收到以下错误。

命名空间“System.Security.Claims”中不存在类型或命名空间名称“Claim”(您是否缺少程序集引用?) [C:\ProjectPath\Project.Tests.Unit\obj\Debug\Moles\m\ mgcsproj] C:\ProjectPath\Project.Tests.Unit\mgcs

显示此消息的各种类型的巨大列表。

有什么想法吗?

4

3 回答 3

7

根据这篇文章,我们从 mole/stub 生成中排除了一些命名空间和类型:

Visual Studio 11 / .NET 4.5 中的故障排除

现在正在编译(一些测试仍然失败,但它正在编译)。

于 2012-09-05T09:11:15.423 回答
1

我们从 VS 2010 升级到 VS 2010 SP1 时遇到了困难。该服务包包含不同的 CLR 方法,最新版本的 Moles 无法理解这些方法。

于 2012-09-19T10:27:51.367 回答
0

我建议更新您的 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 订阅,您可能会发现这是一个昂贵的选择。

于 2012-07-31T17:32:21.780 回答