2016-04-23 11 views
5

Ich habe Microsoft Extended Correctness Rules Regelsatz für meine Xamarin.IOS Projekt. Als ich analysiert hatte ich viele Probleme:Xamarin.IOS. Code-Analyse - CA2123

  1. CA2123: Fügen Sie das folgende Sicherheitsattribut zu BooleanNegationConverter.Convert(object, Type, object, CultureInfo) um IMvxValueConverter.Convert(object, Type, object, CultureInfo) ein LinkDemand auf Basis Methode zum Spiel: SecurityCriticalAttribute.

Warum muss ich Sicherheitsattribute setzen? Wofür? Oder muss ich es tun?

  1. CA2134: Transparent oder sichere kritische Methode .get() ist zwingende kritische Methode [simple self interface].get() in Verletzung der Regeln Methode außer Kraft setzen. .get() muss sicherheitskritisch werden, um eine kritische virtuelle Methode zu überschreiben oder eine kritische Schnittstellenmethode zu implementieren.

Das gleiche ... Wie kann ich es für IOS-Projekt beheben? Warum ich dieses Problem habe.

Danke!

Antwort

4

Der Code Access Security nur teilweise und experimentally implemented in Mono.

Code Access Security (CAS) ist eine neue experimentelle (das heißt nicht unterstützt) Funktion in der Mono 1.2 Release. Es ist vollständig genug, um damit zu spielen, sollte aber nicht in der Produktion verwendet werden (unvollständig und ungeprüft). Der Sicherheitsmanager ist standardmäßig deaktiviert.

Diese Warnungen sind wichtig, wenn die Laufzeit diese Funktion verwendet. Es wird nicht in iOS und Android verwendet. Sie können es also ignorieren.

+0

Danke! Kann ich für die nächste Regeln gleiche Weise verwenden verwenden ?: 1. ** CA2140 ** - Transparent Methode '[MetodName]' Referenzen sicherheitskritische Typ 'Liste '. Damit dieser Verweis gemäß den Sicherheitstransparenzregeln zulässig ist, muss entweder "[Methodenname]" sicherheitskritisch oder "sicher-kritisch" werden oder "Liste " sicherheitsrelevant oder transparent werden. 2. ** CA2146 ** - Transparenter oder sicher-kritischer Typ '[Typ]' leitet sich vom kritischen Typ [[Interface]] ab, was gegen die Regeln der Transparenzvererbung verstößt. '[Type]' muss kritisch sein, um von einem kritischen Typ abzuleiten oder eine kritische Schnittstelle zu implementieren. –

+1

Ja, sie sind alle mit dieser CAS-Funktion verbunden. Ich habe auch versucht, die Sicherheitsattribute global für meine Bibliotheken festzulegen. Aber das Problem ist dann, dass 3rd-Party-Bibliotheken immer noch dieses Problem haben und der Unit-Test-Runner den Test unter Windows nicht ausführen wird, da dies .NET ist und .NET diese Funktionen implementiert hat. Sie zu ignorieren und zu dokumentieren, warum wir das tun, ist unser Umgang mit unseren Projekten. –