Xamarin.IOS。代码分析 - CA2123

Posted

技术标签:

【中文标题】Xamarin.IOS。代码分析 - CA2123【英文标题】:Xamarin.IOS. Code analysis - CA2123 【发布时间】:2016-08-16 21:46:34 【问题描述】:

我为我的Xamarin.ios 项目设置了Microsoft Extended Correctness Rules 规则。当我分析时,我遇到了很多麻烦:

    CA2123:将以下安全属性添加到 BooleanNegationConverter.Convert(object, Type, object, CultureInfo) 以匹配基础方法 LinkDemand 上的 LinkDemandSecurityCriticalAttribute

为什么我需要设置安全属性?为了什么?还是我必须这样做?

    CA2134:透明或安全的关键方法 .get() 正在覆盖关键方法 [simple self interface].get(),违反了方法覆盖规则。 .get() 必须成为安全关键才能覆盖关键虚拟方法或实现关键接口方法。

同样...我如何为 IOS 项目修复它?为什么我有这个问题。

谢谢!

【问题讨论】:

【参考方案1】:

代码访问安全性只是部分和experimentally implemented in Mono.

代码访问安全性 (CAS) 是 Mono 1.2 版本中的一项新实验性(即不受支持)功能。它足够完整,可以玩,但不应该在生产中使用(不完整且未经审计)。安全管理器默认关闭

如果运行时使用此功能,这些警告很重要。它不用于 iOS 和 android。所以你可以忽略它。

【讨论】:

谢谢!我可以对下一个规则使用相同的方式吗?: 1. CA2140 - 透明方法[MetodName] 引用安全关键类型List<T>。为了在安全透明度规则下允许此引用,[MethodName] 必须成为安全关键或安全关键,或者List<T> 必须成为安全安全关键或透明。 2. CA2146 - 透明或安全关键类型[Type] 派生自关键类型[Interface],违反了透明继承规则。 [Type] 必须是关键的,才能从关键类型派生或实现关键接口。 是的,它们都与这个 CAS 功能有关。我还尝试为我的库全局设置安全属性。但问题是,第 3 方库仍然存在这个问题,并且单元测试运行器不会在 Windows 上运行测试,因为这是 .NET 并且 .NET 实现了此功能。因此,忽略它们并记录我们这样做的原因,就是我们在项目中处理它的方式。

以上是关于Xamarin.IOS。代码分析 - CA2123的主要内容,如果未能解决你的问题,请参考以下文章

xamarin.ios 使用仅图像代码实现 PageController

Xamarin iOS教程之编辑界面编写代码

在 Xamarin.IOS 中执行本机代码时获得 SIGSEGV

Xamarin IOS绑定微信SDK

ios应用程序代码中的方括号是啥(xamarin)

Xamarin Studio 5.9.7(内部版本 9)和 Xamarin.iOS 9.0.1.18 中的代码设计错误