【问题标题】:Fakes assembly is not generating假货组装不生成
【发布时间】:2014-06-16 20:31:04
【问题描述】:

我不知道我需要做什么来生成假货。在我的测试项目中,我包含了对我想要伪造的程序集的引用。它将 /Fakes/.fakes 添加到我的项目中并构建了该项目。有大量警告,但有 0 个错误并且构建成功完成。但它没有添加对生成的 .Fakes 程序集的任何引用。

大多数警告是无法为枚举生成存根或填充程序,或者某些私有类对 fakes 程序集不可见。程序集中只有 1 个类是我想要 Shim 的,而没有我想要 Stub 的。所以我编辑了 .fakes 文件:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/"
       Diagnostic="true">
  <Assembly Name="[assembly name]">
    <StubGeneration>
      <Clear />
    </StubGeneration>
    <ShimGeneration>
      <Clear />
      <Add Namespace="[namespace that the 1 class I want to shim is in]" />
    </ShimGeneration>
  </Assembly>
</Fakes>

我清理并重建了项目,但我仍然收到大量警告,并且没有错误,它不能存根或填充我在 .fakes 文件中排除的类,并且 .Fakes 程序集仍然不是正在生成。

我实际上如何阻止它尝试创建存根并仅为特定命名空间中的类创建填充程序?来自http://msdn.microsoft.com/en-us/library/hh708916.aspx 的信息显然不正确。

此外,我从 Assembly 元素中删除了 Version 属性,但我收到的警告仍然包括命名空间中的版本号。这是怎么回事?

【问题讨论】:

  • 请注意,如果类是密封的或者是来自 mscorlib 的某些类,则会有一些困难。这些可能无法伪造。目前,我们没有足够的信息来解释您的问题的原因。
  • 程序集中有一些密封类,但我对这些不感兴趣。我试图填充的课程是公开的,而不是密封的。我正在尝试修改 .fakes 文件以排除那些密封类。它似乎并不关心我在 .fakes 文件中放了什么。
  • @Nick 你找到答案了吗?我也有同样的问题!
  • @Elhamabbasi 我的问题只是我的 .fakes 文件与架构不匹配。我有&lt;StubGeneration&gt;&lt;ShimGeneration&gt; 作为&lt;Assembly&gt; 元素的子元素,但它们不应该是子元素,它们应该是兄弟姐妹并且在&lt;Assembly&gt; 之后出现

标签: visual-studio-2013 microsoft-fakes


【解决方案1】:

我发现了我的问题所在。我认为 StubGeneration 和 ShimGeneration 应该是 Assembly 的子元素,但它们不是。他们应该是Fakes的孩子,Assembly的兄弟姐妹。将我的 .fakes 文件更改为此后,它可以工作:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/"
       Diagnostic="true">
  <Assembly Name="[assembly name]" />
  <StubGeneration>
    <Clear />
  </StubGeneration>
  <ShimGeneration>
    <Clear />
    <Add Namespace="[namespace that the 1 class I want to shim is in]" />
  </ShimGeneration>
</Fakes>

【讨论】:

    猜你喜欢
    • 2020-01-07
    • 2022-01-24
    • 2011-04-29
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多