我正在使用带有SP1的VS2010(也在同一台机器上安装了VS2012)。摩尔人1.0 该项目使用的是.NET 4 我将moles程序集添加到system.dll并在编译时出现以下错误
错误46名称空间'System.Collections.Generic'中不存在类型或命名空间名称'IReadOnlyList'(您是否缺少程序集引用?)[C:\ Test \ _ obj \ Debug \ Moles \ s \ mg csproj] C:\ Test \ mgcs测试
据我所知,IReadOnlyList .NET 4.5。
其他人有这个问题吗?
答案 0 :(得分:0)
更新了解决方案 我能够在安装了.Net Framework 4.5的VS 2010中运行Pex。也许其他人已经解释说这是解决方案,但我的问题(对Moles和Pex来说是新的)是许多解释都是模糊的。感谢这些帖子的作者,因为他们让我朝着正确的方向前进:
http://feherzsolt.wordpress.com/2013/02/13/moles-and-net-4-5/
http://www.daedtech.com/using-moles-with-the-system-assembly
因此,解决方案是在测试项目中创建一个新的.moles文件(System.moles),该文件与Pex创建yourAssemblyUnderTest.moles文件的级别相同,并将以下内容添加到文件中。
<Moles xmlns="http://schemas.microsoft.com/moles/2010/">
<Assembly Name="System" ReflectionOnly="true" />
</Moles>
您可能需要清理(或手动删除obj文件夹内容)并重建,但此解决方案对我有用。我还注意到第一个构建将报告构建错误,但错误将在后续构建中消失。
替代解决方案 我知道这不是 THE 解决方案,但它是一个(差)解决方案,允许Pex运行...加上这个评论太长了。如果有人知道怎么让PEX在4.5 .Net Framework的机器上运行,请回复。
这是我的情景。我有一台带有.Net Framework 4.5的机器,我安装了Visual Studio 2010和2012。我安装了Pex(en_visual_studio_2010_pex_0.94.51023.0_power_tools_x64_598803.exe)并且可以在针对.Net Framework 4.0的VS 2010项目中运行Pex。我可以运行Pex并且它确定了问题......但是一旦我将问题提升到单元测试,单元测试项目就会因为以下构建错误而无法编译
The type or namespace name 'IReadOnlyList' does not exist in the namespace 'System.Collections.Generic' (are you missing an assembly reference?)
经过大量搜索,并且读到Pex或Moles正在用4.0版本替换4.5 .Net Framework程序集我决定卸载4.5,安装4.0,并尝试一下。在4.0上运行工作正常,我不需要定义Mole类型过滤器来使其工作。然后我尝试再次升级到4.5 Framework ...但遗憾的是我最后回到了我开始使用IReadOnlyList命名空间问题的地方。