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

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

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

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

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

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

谢谢!

【问题讨论】:

    标签: c# xamarin mono xamarin.ios code-access-security


    【解决方案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 实现了此功能。因此,忽略它们并记录我们这样做的原因,就是我们在项目中处理它的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 2011-08-14
    • 2011-05-04
    • 2015-02-15
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多