49

XmlSerializerを使用してコード行でBindingFailureを取得します。

XmlSerializer s = new XmlSerializer(typeof(CustomXMLSerializeObject));

表示名CustomXMLSerializeObject.XmlSerializers'のアセンブリは、ID1のAppDomainの'LoadFrom'バインディングコンテキストでロードできませんでした。失敗の原因は次のとおりです。System.IO.FileNotFoundException:ファイルまたはアセンブリをロードできませんでしたXMLSerializeObject.XmlSerializers、バージョン= 1.4.0.0、Culture = neutral、PublicKeyToken =null'またはその依存関係の1つ。システムは、指定されたファイルを見つけることができません。

エラーは非常に長く、バインド前の状態情報と、ファイルを検索するために探した場所を説明します。

私がdesrializeしようとしているカスタムオブジェクトは比較的単純です-パブリックアクセサーを持つプライベート整数と文字列の束です。別のカスタムシリアル化可能なクラスであるプライベート変数がありますが、パブリックアクセサーを含むプライベート文字列しかありません。

厄介な部分?これは、逆シリアル化した場合にのみ発生します。オブジェクトをシリアル化すると、そのコード行は正常に実行されます。それは正常に動作し、オブジェクトは逆シリアル化され、完全に入力されます。パフォーマンスの低下や長い読み込み時間に気付かないでください。

この警告は正確には何ですか(エラーや例外ではなく、プログラムは後で正常に実行されます)?なぜそれが起こるのですか?単に警告を無効にせずにそれを防ぐにはどうすればよいですか?

4

4 に答える 4

67

奇妙なXmlSerializerエラーによると:

この例外は、XmlSerializer の通常の操作の一部です。これは、フレームワーク コード内で捕捉され、処理されることが予想されます。無視して続行してください。デバッグ中に気になる場合は、すべての例外ではなく、未処理の例外でのみ停止するように Visual Studio デバッガーを設定します。

おそらく、監視することを選択している例外に基づいて発生しています。

例外の設定方法を教えてください: Debug -> Exceptions

Managed Debugging Assistants の下にある BindingFailure の [Thrown] チェックボックスをオフにすると、例外はなくなります。または、これを行いたくない場合は、この例外は設計によるものであるため、そのまま続行できます

于 2010-02-05T19:39:23.860 に答える
42

次のメソッドを使用して xmlSerializer インスタンスを構築すると、問題が解決します。

XmlSerializer s = XmlSerializer.FromTypes(new[] { typeof(CustomXMLSerializeObject) })[0];

その後、例外処理をオフにする必要はありません。

于 2014-03-05T02:24:06.733 に答える
4

MS VS 2010 Feedbackによると、これが設計された方法です。この例外を防ぎ、実行時の実行速度の低下を防ぐには、XML シリアライザー アセンブリを生成する必要があります。

Microsoft SGenXGenPlus、およびMvp.Xml.XGenの3 つのツールを見つけることができました。残念ながら、この記事の時点では、これらはいずれも 2007 年以降更新されていません。

于 2012-05-31T18:20:38.720 に答える