Pregunta

Estoy usando LINQ to SQL como mi capa de acceso a datos para un nuevo proyecto. He agregado mis tablas de base de datos al diseñador y todo está bien.

Cada vez que uso una de estas clases en una función, Visual Studio me advierte que 'Tipo xxxx no es compatible con CLS' o que 'El tipo de función de retorno xxxx no es compatible con CLS'

¿Es este un problema con las clases que genera LINQ to SQL? ¿Importa? ¿Puedo desactivar estas advertencias en cualquier lugar? Mi lista de errores de VS está obstruida con estas advertencias, lo que dificulta ver cualquier otra cosa.

EDITAR:

Lo siento, debería haber mencionado que estos son proyectos VB.NET. :)

¿Fue útil?

Solución

Ben M tiene la idea correcta sobre el problema.

La forma más rápida de resolver esto en un proyecto VB.Net es hacer que el ensamblado no cumpla con CLS y, por lo tanto, evitar esas advertencias. Agregar la siguiente línea a cualquiera de sus archivos hará el truco

<Assembly: CLSCompliant(False)>

El mejor archivo para agregarlo es AssemblyInfo.vb dentro de " My Project " carpeta.

Otros consejos

Encontré este enlace en MSDN Connect:

  

Al agregar relaciones de herencia   entre clases en el diseñador de O / R,   el nivel de acceso en el generado   miembro de la tienda de respaldo del Id   El atributo, " _Id " ;, se cambia de   privado a protegido, causando el CLS   violación de la regla. La propiedad Id es   utilizado en una asociación entre el   clases.

Si desea deshacerse de las advertencias, puede usar:

#pragma warning disable 3021

O, si desea deshabilitarlos en todo el proyecto, agregue 3021 al " Suprimir advertencias " campo en la pestaña Generar de las propiedades de su proyecto en Visual Studio.

En última instancia, depende de qué tipos devuelve su base de datos y cuáles son los nombres de esos tipos.

Un problema relacionado con el cumplimiento de CLS es un tipo que tiene dos miembros expuestos públicamente que difieren en nombre solo por caso, p. MyField y myField.

Aquí está un artículo eso debería ayudarlo a determinar dónde están ocurriendo sus problemas de cumplimiento de CSS y tratarlos. Si necesita más ayuda, presente un código y veremos qué podemos hacer.

Por lo general, veo ese error cuando consumo tipos de un ensamblado que no tiene el CLSCompliant en otro ensamblado que sí lo hace.

Es decir, ¿sus clases de Linq a SQL están en un proyecto diferente a las funciones que está escribiendo? ¿Ha especificado [ensamblaje: CLSCompliant (verdadero)] en algunos pero no en todos los proyectos de su solución?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top