VS 2010 SP1上的Moles 0.94.51023.0错误

Nic*_*nik 6 moles pex-and-moles visual-studio-2010-sp1

我试图在VS 2010 SP1中使用Moles 0.94.51023.0来摧毁System.ServiceModel v4并且我一直得到以下错误: 名称空间'ssm :: System.ServiceModel.Channels中不存在类型或命名空间名称'IHttpCookieContainerManager' '(你错过了一个程序集引用吗?)[my-test-project.Test\obj\Debug\Moles\ssm\mgcsproj] my-test-project.Test\mgcs 293022 43

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

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

谢谢尼克

Nic*_*nik 5

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

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

发布VS 2010 SP1更新:

%Program Files(x86)%\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.ServiceModel.dll - > File version 4.0.30319.1

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

在VS中的对象浏览器中以及在Reflector中比较这两个dll会产生IHttpCookieContainerManager接口已在较新文件中删除的结果.所以我怀疑这是.NET探测找到较新的DLL和Moles在做鼹鼠/存根生成时反映旧版本的组合.通过手动运行Moles exe而不使用任何类型的引用路径,我可以为较新的DLL手动生成Moles dll,而不是在构建期间添加一堆ref路径的MSBuild目标.