使用 NSubstitute 的项目的代码分析 CA0001 错误

Posted

技术标签:

【中文标题】使用 NSubstitute 的项目的代码分析 CA0001 错误【英文标题】:Code analysis CA0001 error for project using NSubstitute 【发布时间】:2012-07-06 10:09:35 【问题描述】:

我有一个(.NET 4)测试项目,它引用(.NET 4)NSubstitute.dll。

当我对项目运行 CodeAnalysis 时,我得到了一些 CA0001 错误:

运行代码分析...

MSBUILD:错误:CA0001:读取模块“NSubstitute”时遇到以下错误:无法解析类型引用:[mscorlib,版本=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]System.Runtime.CompilerServices。扩展属性。

MSBUILD:错误:CA0001:Rule=Microsoft.Interoperability#CA1404,Target=arcplan.test.engage.admin.ecmFramework.CAppSettingsTest.#IsSettingsStoreReadyToUse_SettingsStoreIsNotReady_ReturnsFalse():读取模块“ECMFrameworkTest”时遇到以下错误:方法类型位置 0 的参数无效。

MSBUILD:错误:CA0001:Rule=Microsoft.Security#CA2122,Target=arcplan.test.engage.admin.ecmFramework.CAppSettingsTest.#IsSettingsStoreReadyToUse_SettingsStoreIsNotReady_ReturnsFalse():读取模块“ECMFrameworkTest”时遇到以下错误:方法类型位置 0 的参数无效。

(等等)

有人知道怎么解决吗?

【问题讨论】:

【参考方案1】:

您使用的是 1.4.1 版吗?此版本的构建存在由using ilmerge with .NET 4.5 installed 引起的问题。从 NSubstitute 的 1.4.2 版(此评论的最新版本)开始,此问题已得到修复。

更多详情请访问the commit to fix this。

【讨论】:

我正在使用 1.4.1 - 我将尝试使用 1.4.2。我没有安装 .NET 4.5。 是的!我升级到 NSubstitute 1.4.2 并运行代码分析。非常感谢。 @GarethOwen 问题在于分布式二进制文件是在安装了 .NET45 的机器上构建的。很高兴你把事情解决了。很抱歉给您带来不便。

以上是关于使用 NSubstitute 的项目的代码分析 CA0001 错误的主要内容,如果未能解决你的问题,请参考以下文章

用NSubstitute来mock

参数匹配不能与 NSubstitute 一起正常工作

使用 FluentAssertions 和 NSubstitute 的异步单元测试是不确定的

NSubstitute DbSet / IQueryable<T>

NSubstitute ForPartsOf模拟除一个以外的所有方法?

使用 NSubstitute 模拟出现问题时抛出异常的方法