【问题标题】:Can't build project with Fakes assembly无法使用 Fakes 程序集构建项目
【发布时间】:2012-08-31 14:14:44
【问题描述】:

我已将 Fakes 程序集添加到我的 Visual Studio 2012 单元测试项目中,对应于我的应用程序项目(被测系统),如 Peter Provost's article 中所述。但是,由于生成的 Fakes 代码中存在未解析的类型引用,该项目将不再构建:

The type or namespace name 'FieldDefinition' does not exist in the namespace 'bc::ProductStudio' (are you missing an assembly reference?)
[C:\Users\arvek\Projects\Project\Project.Tests\obj\Debug\Fakes\bc\f.csproj]
C:\Users\arvek\Projects\Project\Project.Tests\f.cs

这里出了什么问题?据我所知,这应该可以正常工作,所以在我看来,Fakes 设施中存在错误。

【问题讨论】:

  • 在 VS 2013 中也存在类似的问题 issue,由 VS 中的错误引起。还有一种解决方法。你可以看到它here

标签: c# unit-testing microsoft-fakes


【解决方案1】:

这个错误也存在于 VS2013 中。 Link 到 MSDN 错误。

解决方法:从 FakeAssemblies 文件夹中删除文件 .messages。

【讨论】:

  • 链接已损坏。
【解决方案2】:

该错误很可能是由于伪造的程序集触发的 Fakes 中的错误。我已将问题提交给 Microsoft。

【讨论】:

【解决方案3】:

可以帮助您诊断问题的一个选项是为您的假货开启诊断功能。在您的 .fakes 文件中。

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011" Diagnostic="true" Verbosity="Noisy">

另外,请确保您的“MSBuild 项目构建输出详细程度”设置为诊断。您可以在工具 -> 选项 -> 项目和解决方案 -> 构建和运行中找到它。

重建你的测试项目,现在你的输出窗口应该充满信息,包括任何失败的假货

【讨论】:

  • 在很多情况下,现在设置 Dignostic="true" 就足够了。在 Visual Studio 2012 Update 1 中,这使得 Fakes 会针对遇到的代码生成问题生成警告。警告会自动显示在 Visual Studio 的错误列表窗口中。
【解决方案4】:

删除 Fakes 文件夹将解决此问题。

【讨论】:

    【解决方案5】:

    您不会相信这一点,但我只需在文件中添加一个新行,删除该新行,然后保存实际上是未修改的文件,就可以让伪造品再次工作。在下一次构建之后一切都很好。

    让你离开的事情......嗯......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 2013-03-12
      • 2018-03-07
      • 2015-08-21
      相关资源
      最近更新 更多