3つのプロジェクトがあります-SilverlightアプリAと2つのSilverlightクラスライブラリB、C。私のシリアル化ロジックは、プロジェクトCのメソッドCallSer()にあります。BのルーチンがCallSer()を呼び出す場合、すべてが正常に機能します。ただし、CのルーチンがCallSer()を呼び出すと、以下のエラーが発生します。Copy Localプロパティを設定しようとしましたが、役に立ちません(Copy Local = Trueの場合、アセンブリがデバッグフォルダーにコピーされるのがわかります)。これは驚くべきことのようです、これを解決する方法について誰かがアイデアを持っていますか?ありがとう。
{System.IO.FileNotFoundException:ファイルまたはアセンブリ'System.Xml、Version = 5.0.5.0、Culture = neutral、PublicKeyToken=7cec85d7bea7798e'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。ファイル名:'System.Xml、Version = 5.0.5.0、Culture = neutral、PublicKeyToken = 7cec85d7bea7798e'}
更新:もう少し分析を行ったところ、CallSer()の呼び出しは実際には別の.NETクラスライブラリDからのものであることがわかりました。したがって、コールスタックはD-> C-> CallSer()を示しています。Cを参照している限り、これによってどのような違いが生じるかSystem.Xml.Serialization
わかりません。また、System.Xml.Serialization
Dの[参照の追加]オプションにリストされていませんか?どうしてこんなことに?
更新:XmlSerializerがどの参照をロードするかについて混乱しているようです。これは、SilverlightのXmlSerializerがSystem.Xml.Serialization.dllアセンブリ内に定義されており、.NETFrameworkのSystem.Xml.dll内にあるためです。私のプロジェクトDにはSystem.Xmlへの参照があり、CにはSystem.XmlとSystem.Xml.Serializationがあります。Cが常にSilverlightバージョンのdllを参照していることを確認するにはどうすればよいですか?