我已经安装了 Visual Studio 2015 作为试用,从那时起,我使用 fakes 的单元测试将不再编译,甚至在 VS 2013 上也无法编译。单元测试项目的目标是 .net 4.5。
Msdn https://connect.microsoft.com/VisualStudio/feedback/details/1049179/after-adding-vs-2015-i-cannot-generate-fakes-on-the-system-assembly建议更改目标框架版本。如果我将目标框架更改为 4.6,错误就会消失,但我无法将项目更新到 .net 4.6,因为每个开发人员都必须立即更新。
我得到的错误:
无法解析主要参考“mscorlib.4.0.0.0.Fakes”
因为它是针对“.NETFramework,版本=4.6
框架。这是比当前目标更高的版本
框架“.NETFramework,版本=4.5”。
我还尝试删除假货并重新创建它们,但它们无法构建,我收到如下错误:
类型或命名空间名称“EventDataAttribute”不存在于
命名空间“System.Diagnostics.Tracing”*;
有解决这个问题的方法吗?
您也许可以删除有问题的类。如果您的构建输出有类似的语句
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>
现在,情况可能比这更加微妙。为了让它工作,我需要将单元测试项目定位到 4.6,以便第一次生成 mscorlib.4.0.0.0.Fakes .dll。然后我可以将其重新定位回 4.5.1。但是,使用配置可能值得您花一些时间,因为我能够解决类似的问题。
这是一个微软问题 https://connect.microsoft.com/VisualStudio/feedbackdetail/view/1049179/after-adding-vs-2015-i-cannot-generate-fakes-on-the-system-assembly#报告,这是我得到解决方法的地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)