在VS 2015下编译失败,出现CS0452错误

时间:2015-11-30 06:44:24

标签: c# generics visual-studio-2015 code-analysis

我有一些代码可以从字符串表示中创建一个类型化的值。此代码处理值类型,类,数组等。

不幸的是,升级到VS 2015后,代码分析会在编译时输出此错误:

  

CS0452类型' T'必须是参考类型才能将其用作参数' T'通用类型或方法' Foo.Bar(string)'

在VS 2012或2013下未发生此错误,并且代码已正确编译并正常运行。

ProfileValue.Value的类型为String。 在CreateValue中,T可以是值类型,类等。

致电代码:

doc.Load(Server.MapPath("\\Reports\\CrystalReport1.rpt")",CrystalDecisions.Shared.OpenReportMethod.OpenReportByTempCopy)

被叫方法签名:

doc.Load(@"D//CrystalReport1.rpt",CrystalDecisions.Shared.OpenReportMethod.OpenReportByTempCopy)

这在VS 2013中通过了代码分析,效果很好。我该怎么做才能解决新的VS 2015代码分析错误?

1 个答案:

答案 0 :(得分:0)

当代码使用动态时,看起来VS 2015下的代码合同失败了。这是由于Roslyn编译器的变化。

https://github.com/Microsoft/CodeContracts/issues/18