Domanda

Sto usando LINQ to SQL come livello di accesso ai miei dati per un nuovo progetto. Ho aggiunto le tabelle del mio database al designer e tutto va bene.

Ogni volta che utilizzo una di queste classi in una funzione, Visual Studio mi avvisa che "Tipo xxxx non è conforme a CLS" o che "Il tipo restituito di funzione xxxx non è conforme a CLS"

È un problema con le classi generate da LINQ to SQL? È importante? Posso disabilitare questi avvisi ovunque? Il mio elenco di errori VS è ostruito da questi avvisi che rendono difficile vedere qualsiasi altra cosa.

EDIT:

Mi dispiace, avrei dovuto menzionare questi sono progetti VB.NET. :)

È stato utile?

Soluzione

Ben M ha l'idea giusta sul problema.

Il modo più rapido per risolverlo su un progetto VB.Net è rendere l'assemblaggio non conforme a CLSC e quindi evitare tali avvertimenti. L'aggiunta della seguente riga a uno qualsiasi dei tuoi file farà il trucco

<Assembly: CLSCompliant(False)>

Il miglior file per aggiungerlo è AssemblyInfo.vb all'interno di " Il mio progetto " cartella.

Altri suggerimenti

Ho trovato questo collegamento su MSDN Connect:

  

Quando si aggiungono relazioni ereditarie   tra le classi nel progettista O / R,   il livello di accesso al generato   membro del negozio di supporto dell'ID   l'attributo, " _Id " ;, viene modificato da   privato a protetto, causando il CLS   violazione delle regole. La proprietà Id è   utilizzato in un'associazione tra il   classi.

Se si desidera eliminare gli avvisi, è possibile utilizzare:

#pragma warning disable 3021

Oppure, se desideri disabilitarli a livello di progetto, aggiungi 3021 a " Elimina avvisi " campo nella scheda Genera delle proprietà del progetto in Visual Studio.

In ultima analisi dipende da quali tipi vengono restituiti dal database e da quali sono i nomi di tali tipi.

Un problema relativo alla conformità CLS è un tipo con due membri esposti pubblicamente che differiscono nel nome solo per caso, ad es. MyField e myField.

Ecco un articolo che dovrebbe aiutarti a determinare dove si verificano i tuoi problemi di conformità CSS e gestirli. Se hai bisogno di ulteriore aiuto, metti un po 'di codice e vedremo cosa possiamo fare.

Di solito vedo quell'errore quando sto consumando tipi da un assembly che non ha il attributo CLSCompliant in un altro assembly che lo fa.

Cioè, le tue classi Linq to SQL sono in un progetto diverso rispetto alle funzioni che stai scrivendo? Hai specificato [assembly: CLSCompliant (true)] in alcuni ma non in tutti i progetti nella tua soluzione?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top