Tengo una aplicación winforms bastante grande y compleja. En un esfuerzo por reducir el tiempo de inicio, pregeneré ensambles de serialización usando el siguiente archivo por lotes.¿Por qué mi tiempo de inicio de .NET aumenta con los ensamblados de serialización pregenerados?
; delete any existing serialization assemblies
del *XmlSerializers.dll
; gen new serialization assemblies
for %%a in (*.dll) do sgen /assembly:%%a
; delete .deleted files (generated for assemblies which do not allow serialization)
del *.dll.deleted*
Sin embargo, para mi sorpresa, el tiempo de arranque aumentó de 4.6 segundos a 6.1 segundos, un salto de 1.5 segundos. Esto era cierto tanto si era frío como templado.
Por lo tanto, las preguntas:
- ¿Por qué iniciar mi aplicación más lento con ensamblados de serialización en el lugar?
- ¿Hay alguna manera de ver a través de Perfmon o alguna otra herramienta cuando la aplicación genera conjuntos de serialización?
- ¿Estoy generando ensamblajes de serialización correctamente?
, a menos que alguien sepa cómo activar el resaltado de sintaxis de archivos por lotes, tendremos que dejarlo como 'lang-none' . – Adam
¿Cuántos serializadores está generando ... si es un número grande ... quizás podría combinarlos con ILMerge? ¿Estás corriendo en Windows de 64 bits? ¿Agrega referencias a las DLL de serialización pregeneradas en su proyecto? –
Puede usar la opción/Type para generar solo el código de serialización para el Tipo que se serializará ... en lugar de todos los tipos públicos en su DLL. –