2009-10-28 2 views
9

Lors de la compilation ma solution, je reçois plusieurs avertissements de ce qui suit:« des tableaux comme arguments d'attributs ne sont pas conformes CLS » avertissement, mais aucune information de type donné

warning CS3016: Arrays as attribute arguments is not CLS-compliant 

Aucune autre information sur ce type est non conforme est donné. Dans mes projets, j'ai des attributs qui prennent des arguments de tableau params dans leurs constructeurs, mais ils sont tous internes, et cela ne devrait pas affecter la conformité CLS. Pourquoi cet avertissement est-il donné et de quel type est-il donné?

+1

Avez-vous trouvé un moyen facile de trouver où l'avertissement était causé? – jamiebarrow

Répondre

6

CS3016.

Si vous avez un attribut qui prend un tableau comme argument et que le projet est marqué comme CLSCompliant, vous recevrez cet avertissement.

+3

Mais l'attribut est interne à l'assembly - non accessible publiquement. Cela ne devrait pas affecter la conformité CLS. – thecoop

3

Je suis tombé sur ça aujourd'hui. J'ai eu 4 exemples de l'avertissement montrant. J'ai alors trouvé que j'avais l'attribut décorant 4 méthodes publiques dans cet assemblage. Comme je les ai enlevés un par un, les erreurs sont allées un par un. De plus, si vous n'êtes pas conforme CLS, vous pouvez mettre [CLSCompliant (false)] sur les méthodes décorées avec l'attribut (ou la classe sur laquelle les méthodes sont définies). Le placer sur le constructeur/classe de l'attribut offensant ne fait pas l'affaire. Je suppose que cela a du sens, car finalement l'attribut est probablement exposé en dehors de l'assemblage dans le cadre des métadonnées de la méthode publique.

+4

En outre, si vous n'êtes pas conforme CLS, vous pouvez mettre [CLSCompliant (false)] sur les méthodes décorées avec l'attribut (ou la classe sur laquelle les méthodes sont définies). Le placer sur le constructeur/classe de l'attribut offensant ne fait pas l'affaire. Je suppose que cela a du sens, car finalement l'attribut est probablement exposé en dehors de l'assemblage dans le cadre des métadonnées de la méthode publique. – Brent

0

je suis tombé sur la même question, et ce que je devais faire était d'utiliser la fonction « Rechercher dans les fichiers » boîte de dialogue dans VS2010 sélectionnez Utiliser: caractères génériques et dans la zone Rechercher zone de texte, entrez

\[*\(*\)\] 

Cela produit une liste de toutes les instances d'attribut. Je suis allé un par un et j'ai pu identifier et corriger les avertissements.

Questions connexes