Dépannage FileNotFoundException
avec XmlSerializer
Lorsque vous utilisez XmlSerializer
pour sérialiser un type, vous pouvez rencontrer un FileNotFoundException
. Cela se produit même si vous n'avez pas explicitement défini de sérialiseurs personnalisés.
<code class="language-csharp">XmlSerializer serializer = new XmlSerializer(typeof(MyType));</code>
Le message d'erreur indique que le sérialiseur ne peut pas charger un assembly censé contenir des sérialiseurs personnalisés pour MyType
.
La cause profonde :
Le XmlSerializer
recherche ces sérialiseurs dans un assembly nommé [Containing Assembly of MyType].XmlSerializers
. Il s'agit d'un comportement standard et le processus se poursuit généralement sans problème.
Résoudre l'exception :
Dans la plupart des cas, cette exception est inoffensive et peut être ignorée en toute sécurité. La sérialisation se terminera avec succès. Toutefois, pour supprimer les messages d'exception lors du débogage, vous pouvez désactiver les exceptions de première chance pour System.IO.FileNotFoundException
:
Common Language Runtime Exceptions -> System.IO -> System.IO.FileNotFoundException
.Une approche proactive :
Pour une solution plus permanente, pensez à utiliser l'outil XmlSerializerPreCompiler
de Chris Sells. Cet outil pré-génère des sérialiseurs personnalisés, éliminant ainsi le besoin de XmlSerializer
de rechercher au moment de l'exécution et empêchant complètement le FileNotFoundException
. Plus de détails peuvent être trouvés dans le billet de blog « Exception C# XmlSerializer FileNotFound. »
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!