我已经安装了Visual Studio 2015作为试用版,从那以后我的单元测试使用fakes将不再编译,甚至在VS 2013上也没有编译。单元测试项目的目标是.net 4.5。
Msdn建议更改目标框架版本。如果我将目标框架更改为4.6但是我无法将项目更新为.net 4.6,因为每个开发人员必须立即更新,错误就消失了。
我得到的错误:
无法解析主要参考“mscorlib.4.0.0.0.Fakes” 因为它是针对“.NETFramework,Version = 4.6构建的 fraemwork。这是比当前目标版本更高的版本 框架“.NETFramework,Version = 4.5”。
我也尝试删除假货并重新创建它们但是它们没有构建,我得到这样的错误:
类型或命名空间名称'EventDataAttribute'不存在于 命名空间'System.Diagnostics.Tracing'*;
对此有何修复?
答案 0 :(得分:14)
您可以删除问题类。如果你的构建输出有像
这样的语句warning CS0115: 'System.Security.Cryptography.X509Certificates.Fakes.StubX509Certificate2.Dispose(bool)': no suitable method found to override
warning CS0234: The type or namespace name 'EventDataAttribute' does not exist in the namespace 'System.Diagnostics.Tracing'
然后可以从mscorlib.fakes或System.fakes文件
中删除它<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="mscorlib" Version="4.0.0.0"/>
<StubGeneration>
<Remove FullName="System.Diagnostics.Tracing"/>
<Remove FullName="System.Text.Encoding"/>
<Remove FullName="System.Security.Cryptography" />
</StubGeneration>
</Fakes>
现在,它可能比那更微妙。为了使它工作,我需要将Unit Test项目定位到4.6以便第一次生成mscorlib.4.0.0.0.Fakes .dll。然后我可以将它重新定位到4.5.1。但是,使用配置可能值得您花费一些时间,因为我能够解决类似的问题。
这是一个Microsoft problem报告,这是我得到解决方法的地方。
答案 1 :(得分:0)
我必须提到除了doobop发布的解决方案之外,还有以下几行:
<Remove FullName="System.FormattableString" />
<Remove FullName="System.IO" />