studio reales proyectos programacion libro introducción incluye herramientas fundamentos fuente español código con avanzado aplicaciones .net vb.net visual-studio-2010 xsd generated-code

.net - reales - libro de android studio en español pdf



Detección del tipo de fila de datos cuando se utilizan conjuntos de datos generados por XSD (1)

Tengo un archivo de Definición de esquema XML (XSD) en Visual Studio 2010. El Diseñador de DataSet genera un conjunto de datos fuertemente tipado en el archivo <name> .designer.vb

Dependiendo de una serie de factores errantes, parece proporcionar esporádicamente una tipificación fuerte para operaciones enumerables (usadas en LINQ o para cada bucle)

Por ejemplo, a veces la base de códigos generados puede detectar el tipo y, a veces, no:

El código ofensivo parece ser si el archivo generado tiene o no la función:

Public Overridable Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator Return Me.Rows.GetEnumerator End Function

Si lo hace, llamar al enumerador para la función devolverá un object aburrido.
Si no es así, el enumerador devolverá el tipo apropiado.

Mi pregunta:

¿Cómo puedo lograr que genere consistentemente el comportamiento apropiado?

Nuestro código fuente no contiene código generado, por lo que cada desarrollador debe generarlo por sí mismo. Esto hace que algunas máquinas obtengan errores de compilación con tipeo incorrecto, mientras que otras no ... con el mismo código fuente exacto .

Algunas cosas que parecen tener algo que ver con eso:

  • Versión de ensamblado dirigida a .NET 4.0 VS .NET 4.0 Client
  • Si el XSD, el diseñador o los archivos de uso están abiertos durante la generación
  • ¿Otros?

Posibles soluciones:

  • Incluye fuerte tipeo / casting con todas las declaraciones
  • Incluir archivo generado correctamente en el control de código fuente

El problema:

En resumen, el problema se produce cuando se MSDataSetGenerator herramienta MSDataSetGenerator , pero el ensamblado System.Data.DataSetExtensions aún no se ha cargado en el proceso actual de Visual Studio.

La solución:

Una forma de cargar el ensamblaje es abrir cualquier archivo XSD y, a continuación, volver a generar el código del diseñador.

Los siguientes pasos deben generar el archivo de diseñador apropiado:

  1. Abra cualquier archivo XSD a la vista de diseñador (esto carga DataSetExtensions.dll )
  2. Haga clic con el botón derecho en XSD y seleccione Run Custom Tool

Aquí hay un tutorial completo paso a paso con imágenes del problema y la solución

Otras instancias:

Este problema ha sido informado a Microsoft en los siguientes tickets de error:

También se aborda en la pregunta SO:

  • Typed Dataset no usa TypedTableBase en .NET 4