5 Stimmen

Aufräumen C# Compiler Warnung CS3016: Arrays als Attributargumente entsprechen nicht dem CLS.

Mögliche Duplikate:
'Arrays as attribute arguments is not CLS-compliant' Warnung, aber keine Typinformation angegeben

Ich habe einige Code, der diese Warnung an mehreren Stellen generiert. Ich möchte sie reparieren, aber ich weiß nicht, wo sie sind, weil der C#-Compiler die Zeile des Fehlers nicht meldet (dafür gibt es ein offenes MS Connect-Problem).

Gibt es ein Tool, das mir sagen kann, wo sich der problematische Code befindet? Ein IL-Level-Tool ist in Ordnung, der Kenntnis des Methodennamens und des deklarierenden Typs ist gut genug.

0 Stimmen

Irgendwie habe ich das verpasst...

0 Stimmen

Ich sehe wirklich nicht, wie die andere Frage dir helfen kann.

3voto

abatishchev Punkte 94886

Sie haben eine Klasse deklariert wie:

[SomeAttribute(new string[] { "foo", "bar" })
class SomeClass { }

oder ein Attribut deklariert wie:

class SomeAttribute : Attribute
{
    public SomeAttribute(string[] arr) { } // oder ein anderes Array
}

Und das alles passiert, weil Ihre Assembly als CLSCompliant markiert ist:

[assembly:CLSCompliant(true)]

0 Stimmen

Ich weiß, warum es passiert. Ich bin derjenige, der die Assembly von Anfang an als CLSCompliant(true) markiert hat. Ich möchte alle Stellen beheben, die nicht CLS-konform sind, habe aber Schwierigkeiten, sie alle manuell zu finden.

1voto

DanK Punkte 515

Ich würde den folgenden Prozess übernehmen:

  • Identifizieren Sie die Attribute, die Arrays in ihren Konstruktoren haben (die erforderliche Raffinesse hängt offensichtlich davon ab, wie viele Klassen Sie haben, die von Attribut abgeleitet sind)
  • Verwenden Sie die Option "Alle Referenzen suchen" von Visual Studio in den Konstruktoren der Attributklasse, um die Dinge zu finden, die mit dem Attribut unter Verwendung von Arrays dekoriert sind.

Der erste Teil sollte recht einfach sein, wenn die betreffenden Attribute in Ihrer Lösung definiert sind.

Wenn die Attribute von einer Abhängigkeit stammen, müssen Sie möglicherweise eine Regex-Suche verwenden, um die Stellen zu finden, an denen solche Attribute verwendet werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X