XmlSerializer がコンストラクタで FileNotFoundException を返す 質問する

XmlSerializer がコンストラクタで FileNotFoundException を返す 質問する

作業中のアプリケーションで、型をシリアル化しようとすると失敗します。

次のような発言

XmlSerializer lizer = new XmlSerializer(typeof(MyType));

生成:

System.IO.FileNotFoundException occurred
  Message="Could not load file or assembly '[Containing Assembly of MyType].XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified."
  Source="mscorlib"
  FileName="[Containing Assembly of MyType].XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
  FusionLog=""
  StackTrace:
       at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
       at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)

私のクラスには特別なシリアライザーは定義していません。

この問題を解決するにはどうすればいいでしょうか?

ベストアンサー1

信じられないかもしれませんが、これは正常な動作です。例外がスローされますが、XmlSerializer によって処理されるため、これを無視すればすべて正常に続行されます。

これは非常に迷惑だと感じており、少し調べてみるとこれに関する苦情が多数寄せられていますが、私が読んだところによると、Microsoft はこれについて何もする予定はないようです。

特定の例外の初回例外をオフにすると、デバッグ中に例外ポップアップが常に表示されるのを回避できます。Visual Studio で、[デバッグ] -> [例外] (またはCtrl+ Alt+を押すE)、[共通言語ランタイム例外] -> [System.IO] -> [System.IO.FileNotFoundException ] の順に移動します。

別の回避方法についてはブログ記事をご覧ください。C# XmlSerializer FileNotFound 例外(Chris Sells のツールXmlSerializerPreCompilerについて説明しています)。

おすすめ記事