Sve*_*man 9 .net microsoft-fakes
我们在我们的解决方案中长期使用Microsoft Fakes框架在测试期间伪造System.DateTime.UtcNow.
最近,虽然几个星期前,我们开始使用C#7功能(使用VS 2017),包括元组作为函数的返回值.现在,我为一个版本创建了一个新的分支.在新分支中,生成假货失败,下面有多条消息
4>C:\Users\...\Source\... 2017\DEV\WebApp.UnitTests\f.cs(116674,53): error CS0234: The type or namespace name 'ITuple' does not exist in the namespace 'System.Runtime.CompilerServices' (are you missing an assembly reference?) [C:\Users\...\Source\... 2017\DEV\WebApp.UnitTests\obj\Debug\Fakes\m\f.csproj]
4>C:\Users\...\Source\... 2017\DEV\WebApp.UnitTests\f.cs(116674,13): error CS0538: 'ITuple' in explicit interface declaration is not an interface [C:\Users\...\Source\... 2017\DEV\WebApp.UnitTests\obj\Debug\Fakes\m\f.csproj]
我试过这个:
我不知道还有什么可以尝试的.当我们第一次开始使用元组并添加了System.ValueTuple NuGet包时,我们没有遇到这个问题.我们在创建新分支时只注意到了这个问题.我想假设FakesAssemblies的构建或NuGet包的恢复必须触发一些东西.
从那时起,我们也发现当我们重建解决方案时会发生这种情况.
编辑:我也尝试删除所有Fakes程序集,引用和配置并重新开始.结果相同.
som*_*pet 14
您可以忽略mscorlib.fakes文件中的ITuple:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="mscorlib" Version="4.0.0.0"/>
<StubGeneration>
<Remove FullName="System.Runtime.CompilerServices.ITuple"/>
</StubGeneration>
</Fakes>
Run Code Online (Sandbox Code Playgroud)
*注意:<StubGeneration>元素在<ShimGeneration>元素之前
原来,该解决方案针对的是.NET Framework 4.7.1。根据文档(RTFM,我知道...),在该版本中首次ITuple定义System.Runtime.CompilerServices为:
https://msdn.microsoft.com/zh-CN/library/system.runtime.compilerservices.ituple(v=vs.110).aspx
.NET Framework
自4.7.1起可用
| 归档时间: |
|
| 查看次数: |
4125 次 |
| 最近记录: |