質問するログイン新規登録

Q&A

解決済

1回答

4180閲覧

XMLシリアライズ時に発生するメッセージの対処方法

_panda_

総合スコア14

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/10/17 11:49

編集2017/12/03 05:31

0

0

シリアライズ処理を行うと発生する以下のメッセージの解消方法を教えてください。

Unable to resolve assembly プロジェクト名.モジュール名, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null.
The file doesn’t exists in current codebase.

異常終了することはなく、シリアライズも問題なく行われています。
シリアライズを行っている行をtry/catchで囲んでみましたが、
異常を検出することができませんでした。

ビルドも正常に行われています。

動作に問題はないのですが、メッセージが出てくるのは気になります。

呼び出し元
XMLモデルクラス para = (XMLモデルクラス)XMLFunc.Deserializer(XMLファイルパス, typeof(XMLモデルクラス));

デシリアライズ処理(異常処理は抜いてます)
public static object Deserializer(string path, Type t)
{
XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(path);
using (XmlNodeReader reader = new XmlNodeReader(doc.DocumentElement))
return new XmlSerializer(t).Deserialize(reader);
}

上記の処理は、AファイルとBファイルという二つの処理に使用しています。
ファイル内容は異なりますが、出力しているクラスの型はAファイルもBファイルも同じです。
ですが、Aファイルではメッセージは出ず、Bファイルのみメッセージが出てきます。

環境
C#
FW4.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

Tak1wa

2017/10/17 15:34

なんのシリアライズでしょうか(XML?JSON?)シリアライズも色々やり方がありますので現状の実装を追記してください。
_panda_

2017/12/03 04:52

XMLです。
guest

回答1

0

ベストアンサー

これ、無視してもいいです。

XmlSerializerは自分自身のために AssemblyName.XmlSerializers.dllと名付けられたファイルを作って内部で使用します。もしこのファイルがない場合(最初に実行されたとか)はFileNotFoundExceptionが発生するから、この例外をとって AssemblyName.XmlSerializers.dllというファイルを作ったあと、例外を無視します。なので、ユーザーはこの例外が発生するのを自然に無視することができます。

が、デバッグするときは厄介なのかもしれません。Exception SettingでSystem.IO.FileNotFoundExceptionをチェックを解除すればもっと楽にデバッグすることができます。

投稿2017/12/03 08:14

gazette2

総合スコア179

_panda_

2017/12/04 08:09

回答ありがとうございます。 問題がないメッセージで、安心ました。 リリースビルドでもコンソールにメッセージが出力されるのですが、これを出力しない方法は無いのでしょうか?
gazette2

2017/12/04 09:17

今使っている.NET Frameworkのヴァージョンは何ですか?多くの人がXmlSerializerのこの厄介な働き方に不満があったようで.NET Framework4.5よりは明示的に指定していない限りFileNotFoundExceptionは発生しません。問題のない場合4.5以上にアップグレードするのをお勧めします。
_panda_

2017/12/05 09:07 編集

4.6を使用しています。 知らない人が見たら、異常に見えるので、出力したくないのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問