2010-03-30 10 views
7

Hago algunas cosas con la clase XMLSerializer. Como la mayoría de los principiantes, me enfrento al problema de rendimiento en el inicio de la aplicación. Leí muchos blogs, artículos y finalmente uso la herramienta SGEN. Ahora el rendimiento parece estar bien, pero algunas cosas aún no están claras para mí.SGEN XMLSerializer: ¿se debe agregar .XMLSerializers.dll como referencia al proyecto actual o al GAC?

1) ¿Debo usar la sintaxis SGEN así:

SGen.exe /assembly:MyAssembly /type:MyRootXmlType 

o es suficiente con sólo (I utilizar esta sintaxis Actualmente, sólo tengo una clase Serializable en mi montaje):

SGen.exe /assembly:MyAssembly 

¿Cuándo/tipo de parámetro puede ser útil en la práctica?

2) leí en MSDN (http://msdn.microsoft.com/en-us/library/ee704594.aspx)

Este comando genera el serializador montaje MyAssembly.XmlSerializers.dll, que debería añadirse como una referencia al proyecto actual o al GAC .

pero en todos los otros blogs y artículos (por ejemplo en SO) que he leído que es suficiente para simplemente poner MyAssembly.XmlSerializers.dll en la carpeta donde existe MyAssembly.

¿Qué es correcto?

3) ¿Es suficiente generar .XmlSerilizers.dll y desplegarlo junto con MyAssembly o debería agregar algo a mi código?

No lo creo, pero me gustaría estar seguro de que no tendré que cambiar mi código y la "magia" sucede automáticamente.

Respuesta

9

Si no utiliza el argumento/type para sgen.exe, generará el código de/serialización para todos los tipos públicos en el ensamblado. Tenga en cuenta que el atributo [Serializable] no se utiliza en la serialización de XML. Dudo que lo desee, utilice/escriba para mantener pequeño el conjunto generado.

No es necesario agregar una referencia, la serialización Xml siempre intenta una Assembly.Load() en el ensamblado .XmlSerializers.dll de todos modos. Además, nunca hará referencia a las clases generadas XmlSerializationWriterXxx y XmlSerializationReaderXxx directamente en su código. Tiene una ventaja: el sistema de compilación copiará automáticamente el ensamblaje cuando incluya el proyecto en una solución.

Lo único que vale la pena es instalarlo en el GAC cuando diferentes aplicaciones serializan y deserializan el archivo XML. Puede proporcionar otras aplicaciones con el ensamblaje .XmlSerializers.dll copiando el ensamblado a mano también. Lo cual es un poco propenso a errores, usa tu propio juicio aquí. Verifique el párrafo anterior para una forma de automatizar la copia.

+0

Gracias por una respuesta muy clara, saludos! – binball

Cuestiones relacionadas