VS 2010 SP1 上的痣 0.94.51023.0 错误

标签 moles visual-studio-2010 pex-and-moles

我正在尝试使用 Moles 0.94.51023.0 在 VS 2010 SP1 中安装 System.ServiceModel v4,但我不断收到以下错误:
命名空间“ssm::System.ServiceModel.Channels”中不存在类型或命名空间名称“IHttpCookieContainerManager”(您是否缺少程序集引用?)[my-test-project.Test\obj\Debug\Moles\ssm\m.g.csproj] my-test-project.Test\m.g.cs 293022 43

此接口(interface)似乎已从 .NET 4.0 中的 System.ServiceModel.dll 中删除,因为当我在对象浏览器中搜索时,我只能在 System.ServiceModel.dll v2.0.5.0 (Silverlight) 中找到它。

我可以使用 moles.exe 通过 cmdline 重现这一点,并且我尝试更改 moles 文件以仅生成我指定的类型名称,但它似乎没有任何区别。这在我升级到 VS2010 SP1 之前工作正常,所以我怀疑这是一个错误,但任何帮助将不胜感激。

谢谢
缺口

最佳答案

我自己也对此进行了调试,发现根本原因似乎是 VS2010 SP1 (以及相关的 GDR KB update for .NET 4 )更新了一组 DLL 而不是另一组:

%ProgramFiles(x86)%\Referenced Assemblies\中的 System.ServiceModel.dll 与 .NET v4 安装在 %windir%\Microsoft.NET\Framework64\v4.0.30319 中的不匹配...

发布 VS 2010 SP1 更新:

%Program Files(x86)%\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.ServiceModel.dll -> 文件版本 4.0.30319.1

%windir%\Microsoft.NET\Framework64\v4.0.30319\System.ServiceModel.dll -> 文件版本 4.0.30319.225

在 VS 和 Reflector 的对象浏览器中比较这两个 dll 会得出 IHttpCookieContainerManager 接口(interface)已在新文件中删除的结果。因此,我怀疑这是 .NET 探测发现较新的 DLL 和 Moles 在生成痣/ stub 时反射(reflect)较旧的 DLL 的组合。我能够通过手动运行 Moles exe 为较新的 DLL 手动生成 Moles dll,而没有任何类型的引用路径,而不是在构建期间添加一堆引用路径的 MSBuild 目标。

关于VS 2010 SP1 上的痣 0.94.51023.0 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5980076/

相关文章:

c# - 不会为 .NET 方法生成垫片

.net - Microsoft Fakes 和 .Net 4.0

c# - Windows Phone 7项目使用痣的方法

c++ - 什么可能导致此链接器错误?

mocking - 有人让痣正常工作了吗?

c# - 在 EntityFramework 4.1 中如何使用 Moles 从查询数据库中窃取 DbContext?

vb.net - 显示工具条的文本

c - 错误 C2143 : syntax error : missing ';' before 'type'

c# - Moling DataContext 与 MS Moles?

asp.net-mvc - 为什么选择Moles作为我的模拟框架?