CS0436: Conflits de types avec le type importé
Je joins à la présente une instance de la même source des fichiers dans de multiples assemblées à l'aide de l'Ajouter en tant Que Lien de l'option. J'ai précisément besoin d'inclure une instance de la même source au sein de ces assemblées, car il est responsable de la validation de licence qui doit se produire à l'intérieur de l'assemblée. L'exécution de licence des appels à travers le module de limites pourraient présenter un risque pour la sécurité.
Certains des projets dans ma solution qui comprennent le code dépendent d'autres modules qui comprennent également, entraînant avertissement CS0436:
"Le type [type] [licence.cs du chemin d'accès complet] conflits avec l'importés
type [LicenceClass] dans [la dépendance projet a également permis.cs].
En utilisant le type est défini dans [licence.cs du chemin d'accès complet]".
J'ai essayé de déclarer une classe d'alias, mais les définitions internes de licence.cs provoquer le même avertissement. Dans la zone alias, il doit y avoir une référence pour le double nom de la classe qui provoque le message d'avertissement.
Je sais que c'est une mauvaise pratique de double source entre les assemblées, mais c'est intentionnel dans ce cas. Je préfère garder une instance centrale de chaque assemblée des liens vers plutôt qu'une instance dédiée, avec des renommée des classes pour éviter les mises en garde.
La solution de contournement que j'ai est tout simplement d'ignorer l'avertissement à l'aide d'un #pragma
. Est-il une solution plus élégante?
source d'informationauteur pdm2011
Vous devez vous connecter pour publier un commentaire.
Le seul moment où les conflits se produisent lorsque deux classes dépendantes inclure la même classe. Il y a deux solutions:
Désactiver l'avertissement dans les classes qui cause CS0436:
Avoir une instance de la classe, au nom unique à chaque projet client (indésirables à partir d'un entretien de point de vue).
EDIT: Il y a aussi une solution: faire ce que la Marque suggère ci-dessous, et marquez les doublons de classes
internal
.Il est intéressant de noter qu'une autre façon d'obtenir de tels avertissements est simplement la fixation d'un projet dans visual studio pour faire référence à lui-même: Références -> Solution -> etc etc (comment j'ai pensé que ce petit bijou est laissé comme exercice au lecteur ...)
Visual Studio seront heureux de vous y conformer, qu'à jeter un mur de mises en garde du type décrit par l'OP cours de construction, ce qui est attendu (après réflexion) puisque chaque classe est définie deux fois.
J'ai eu une application web que je me suis converti à partir ASP.NET 3.5-4.5 lorsque j'ai déménagé à VS2015. J'ai commencé à voir cela comme un avertissement, mais la solution serait encore de la compilation. Il n'y avait pas de référence circulaire, et la solution de nettoyage et la suppression de la
bin
etobj
dossiers n'ont pas les aider.Il s'avère que VS2015 n'étais pas heureux avec certains de mes classes dans le dossier App_Code. Les classes ont le même espace de noms que le reste des pages web dans le dossier parent. Une fois que j'ai déplacé ces classes le dossier App_Code et de haut niveau de l'application web, les mises en garde s'en alla.
.NET Core, vous pouvez également désactiver l'avertissement d'un projet.json: