Pour quoi MyAssembly.XmlSerializers.dll est-il généré?

Je travaille sur un projet qui génère un assemblage. Je viens de remarquer qu’un assemblage supplémentaire * .XmlSerializers.dll est en cours de création. Pourquoi ce fichier est-il généré automatiquement et à quoi sert-il?

Dans l’implémentation .NET , XmlSerializer génère un assembly temporaire pour sérialiser / désérialiser vos classes (pour des raisons de performances). Il peut être généré à la volée (mais cela prend du temps à chaque exécution), ou il peut être pré-généré pendant la compilation et enregistré dans cet assemblage dont vous parlez.

Vous pouvez modifier ce comportement dans les options du projet (onglet Comstackr -> Options de compilation avancées -> Générer des assemblages de sérialisation , Auto ou Activé , respectivement). L’élément correspondant dans le fichier de projet est GenerateSerializationAssemblies , par exemple, Auto .

FYI. Les étapes exactes pour arrêter la génération automatique de XmlSerializers.dll sont les suivantes:

  1. Dans VS, faites un clic droit sur votre fichier de projet et sélectionnez “Propriétés”
  2. Cliquez sur l’onglet “Build”
  3. Changez le menu déroulant “Générer un assemblage de sérialisation” de “Auto” à “Off”
  4. Reconstruire et il sera parti

Je pense que c’est la compilation JIT (juste à temps) de sérialiseurs XML pour des raisons de performances.

Vous obtenez la même chose avec les instances RegEx à l’aide de l’option RegexOptions.Comstackd activée.

Je ne suis pas un expert .NET CLR, désolé pour le manque de détails techniques précis.

*.XmlSerializers.dll sont générés à l’aide de Sgen.exe [outil générateur de sérialiseur XML]

Voir Sgen.exe sur MSDN

En règle générale, le Sgen.exe est utilisé dans les événements post-construction des projets. Voir si votre projet a un événement post-build qui génère le *.XmlSerializers.dll

Le projet génère uniquement le projet.XMLSerialisers.dll pour les applications Web. Pour les autres applications, vous devez exécuter sgen séparément.