10
votes

'Les tableaux en tant qu'artements d'attributs ne sont pas conformes à la CLS' Avertissement, mais aucune information de type donnée

Lors de la compilation de ma solution, je reçois plusieurs avertissements des éléments suivants:

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


1 commentaires

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


3 Réponses :


7
votes

CS3016 .

Si vous avez un attribut qui prend un tableau comme argument et que le projet est marqué comme CLSCelle Vous obtiendrez cet avertissement.


1 commentaires

Mais l'attribut est interne à l'Assemblée - non accessible au public. Cela ne devrait pas affecter la conformité CLS.



3
votes

Je l'ai couru aujourd'hui. J'ai eu 4 cas de l'avertissement montrant. J'ai ensuite trouvé que j'avais l'attribut décorant 4 méthodes publiques dans cette assemblée. Comme je les ai enlevés un par un, les erreurs ont disparu un par un.

Également, si vous acceptez de ne pas être CLS conforme, vous pouvez mettre [CLSComplet (Faux)] sur les méthodes décorées avec l'attribut (ou la classe sur laquelle les méthodes sont définies). Le mettre sur le constructeur / classe d'attribut incriminé ne fait pas l'affaire. Je suppose que cela a du sens puisque finalement l'attribut est probablement exposé à l'extérieur de l'Assemblée dans le cadre des métadonnées de la méthode publique.


1 commentaires

De plus, si vous acceptez de ne pas être CLS conforme, vous pouvez mettre [CLSComplet (FALSE)] sur les méthodes décorées avec l'attribut (ou la classe sur laquelle les méthodes sont définies). Le mettre sur le constructeur / classe d'attribut incriminé ne fait pas l'affaire. Je suppose que cela a du sens puisque finalement l'attribut est probablement exposé à l'extérieur de l'Assemblée dans le cadre des métadonnées de la méthode publique.



0
votes

J'ai couru dans le même problème, et ce que je devais faire était d'utiliser la boîte de dialogue "Rechercher dans les fichiers" dans VS2010 Select Utilisation: Wildcards et dans la zone de texte, entrez

\[*\(*\)\]


0 commentaires