在.NET4中为System.dll,System.Xml.dll生成痣时编译错误

时间:2012-04-25 23:08:40

标签: .net-4.0 moles

为.NET4 System.dll(内部版本4.0.30310.261)和System.Xml.Dll(内部版本4.0.30319.233)生成痣时存在编译错误。 System.Dll的错误是:

m.g.cs(251449,33): error CS0115: 'System.Net.Moles.SFileWebResponse.Dispose(bool)': no suitable method found to override [c:\jin\moles\tmp\s\m.g.csproj]
m.g.cs(251650,30): error CS0115: 'System.Net.Moles.SFileWebResponse.SupportsHeaders': no suitable method found to override [c:\jin\moles\tmp\s\m.g.csproj]
m.g.cs(255339,33): error CS0115: 'System.Net.Moles.SHttpWebResponse.Dispose(bool)': no suitable method found to override [c:\jin\moles\tmp\s\m.g.csproj]
m.g.cs(255540,30): error CS0115: 'System.Net.Moles.SHttpWebResponse.SupportsHeaders': no suitable method found to override [c:\jin\moles\tmp\s\m.g.csproj]
m.g.cs(303198,33): error CS0115: 'System.Net.Moles.SWebResponse.Dispose(bool)': no suitable method found to override [c:\jin\moles\tmp\s\m.g.csproj]
m.g.cs(303399,30): error CS0115: 'System.Net.Moles.SWebResponse.SupportsHeaders': no suitable method found to override [c:\jin\moles\tmp\s\m.g.csproj]
Done Building Project "c:\jin\moles\tmp\s\m.g.csproj" (default targets) -- FAILED.

System.Xml.Dll的错误是:

m.g.cs(113977,17): error CS0205: Cannot call an abstract base member: 'System.Xml.XmlReader.Close()' [c:\jin\moles\tmp\s\m.g.csproj]
m.g.cs(116149,21): error CS0205: Cannot call an abstract base member: 'System.Xml.XmlResolver.Credentials.set' [c:\jin\moles\tmp\s\m.g.csproj]
m.g.cs(130559,17): error CS0205: Cannot call an abstract base member: 'System.Xml.XmlWriter.Close()' [c:\jin\moles\tmp\s\m.g.csproj]

我在VS2010上使用Moles 0.94。安装.NET 4 Service Pack后,错误只发生在两个DLL的较新版本上。在.NET 4 Service Pack之前,两个DLL的版本4.0.30319.1都生成了Moles。

Moles生成的代码似乎与最新的.NET4程序集不兼容。

1 个答案:

答案 0 :(得分:1)

见这些问题:
Moling System.dll
http://social.msdn.microsoft.com/Forums/en/pex/thread/446669dd-1d69-4020-9174-dc259a55b4b4

基本上,按如下方式更新System.moles:

<Moles xmlns="http://schemas.microsoft.com/moles/2010/">
  <Assembly Name="System" ReflectionOnly="true"/>
</Moles>