垫片不是.NET方法产生(Shims are not generated for .NET meth

2019-08-31 19:45发布

当我开始使用微软正版正货,我很兴奋地开始垫补一些.NET方法。 我带领相信,我将能够匀任何.NET方法,静态与否: http://msdn.microsoft.com/en-us/library/hh549176.aspx 。

不过,我一直在试图匀一些在TcpClient的,只存根的方法创建的,它确实我没有好,因为我希望能够改变一些方法给我回自己的数据,而不是依赖于现场TcpClient的给我的数据。

我愿意就如何做到这一点,如果有另一种方式超越了微软正版正货的任何建议。

编辑:添加代码来说明问题

[TestMethod]
public void CommunicationTest()
{
    var stubbedTcpClient = new System.Net.Sockets.Fakes.StubTcpClient
    {

    };

    //No such ShimTcpClient exists
    var shimmedTcpClient = new System.Net.Sockets.Fakes.ShimTcpClient
    {

    };
}

Answer 1:

得到它与帮助工作这个博客帖子和这里 。

解决的办法是增加我想在System.fakes文件中明确垫片的类。 这就是我的貌似现在:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="System" Version="4.0.0.0"/>
  <ShimGeneration>
    <Clear/>
    <Add FullName="System.Net.Sockets.TcpClient"/>
    <Remove Obsolete="1"/>
  </ShimGeneration>
</Fakes>

Remove Obsolete="1"是从由所述垫片代码被抛出停止错误时,它试图垫片[作废]代码。



Answer 2:

我也有同样的问题。

我System.fakes和mscorlib.fakes是这样的:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="mscorlib" Version="4.0.0.0"/>
  <ShimGeneration>
    <Add Namespace="System.ComponentModel.BackgroundWorker"/>
  </ShimGeneration>
</Fakes>

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="System" Version="4.0.0.0"/>
  <ShimGeneration>
    <Add Namespace="System.ComponentModel.BackgroundWorker"/>
  </ShimGeneration>
</Fakes>

System.fakes

 <Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
   <Assembly Name="System" Version="4.0.0.0"/>
   <ShimGeneration>
     <Add FullName="System.ComponentModel.BackgroundWorker!"/>
   </ShimGeneration>
 </Fakes>

mscorlib.fakes

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="mscorlib" Version="4.0.0.0"/>
  <ShimGeneration>
    <Add FullName="System.ComponentModel.BackgroundWorker!"/>
  </ShimGeneration>
</Fakes>

和保存文件后,我重新生成解决方案。 现在我有ShimBackgroundWorker。



文章来源: Shims are not generated for .NET methods