gpt4 book ai didi

c# - ShimDateTime 在 System.Fakes 中不可用

转载 作者:太空狗 更新时间:2023-10-29 17:44:25 27 4
gpt4 key购买 nike

我正在学习如何在单元测试中使用垫片。我正在尝试使用 DateTime 的经典示例,来自此链接: http://www.wiliam.com.au/wiliam-blog/getting-started-with-microsoft-fakes

我可以在我的单元测试项目中为系统引用添加 Fakes,但是当我尝试使用 System.Fakes.ShimDateTime 时,它​​告诉我:

The type or namespace name 'ShimDateTime' does not exist in the namespace 'System.Fakes' (are you missing an assembly reference?)

如果我检查 System.Fakes 下的可用内容,我只看到 stub 而没有填充程序,所以我似乎也缺少生成填充程序的东西?

不确定它是否相关,但这是 System.fakes 文件中的(默认)内容:

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

我使用的是 Visual Studio 2015。VS2015 14.0.25420.01 Update 3,我的项目运行在.NET Framework 4.5.2

事实上,我的项目在为系统添加伪造后无法立即编译,所以甚至没有尝试使用 ShimDateTime。我得到的编译错误是:

 The type or namespace name 'EventSourceCreatedEventArgs' does not exist in the namespace 'System.Diagnostics.Tracing' (are you missing an assembly reference?)

这来自\UnitTestProject1\obj\Debug\Fakes\m\f.csproj 和在线文件 f.cs:[mqttf::Microsoft.QualityTools.Testing.Fakes.Stubs.StubClass‌ (typeof(global: :Syst‌ em.Diagnostics.Traci‌ ng.EventSourceCreate‌ dEventArgs))]

任何人都可以让我走上正确的轨道,让 ShimDateTime 在 System.Fakes 下可用?

最佳答案

我能够在 .NET 4.5.2 项目的 Visual Studio 2015 Update 3 上解决此问题:

error CS0234: The type or namespace name 'ShimDateTime' does not exist in the namespace 'System.Fakes' (are you missing an assembly reference?)

解决方法是将条目实际添加到 mscorlib.fakes XML 文件中(而不是像您在 System.fakes 中假设的那样)

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/"  Diagnostic="false">
<Assembly Name="mscorlib" Version="4.0.0.0" />
<StubGeneration>
<Clear />
</StubGeneration>
<ShimGeneration>
<Clear />
<Add FullName="System.DateTime!" />
</ShimGeneration>
</Fakes>

我相信这是因为,如图所示here on MSDN , System.DateTime 实际上在mscorlib 程序集中。

关于c# - ShimDateTime 在 System.Fakes 中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40039081/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com