私は 3 つのアセンブリ、WP7 アプリ (7.0 をターゲット)、Web サービス プロジェクト (4.0 を実行)、およびポータブル クラス ライブラリ (テンプレートから構築され、WP7、SL4、および .NET 4.0 をターゲット) を持っています。最初の2つ。
ローカルで (IIS Express で) 実行すると問題なく動作しますが、デプロイされた Web サービス アセンブリのインスタンス (私がほとんど制御できないリモート IIS サーバー上) に対して実行すると、次の例外が発生して失敗します。
System.IO.FileNotFoundException: ファイルまたはアセンブリ 'System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。ファイル名: 'System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' ---> System.IO.FileNotFoundException: ファイルまたはアセンブリを読み込めませんでした 'System.Xml.Serialization, Version=2.0 .5.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35、Retargetable=Yes' またはその依存関係の 1 つ。システムは、指定されたファイルを見つけることができません。ファイル名: 'System.Xml.Serialization, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Retargetable=Yes'
スタック トレースは、それが PCL への最初の呼び出しであることを示しています。これは、上記のようなタイプの読み込みエラーである場合に意味があります。
PCL アセンブリへの参照を削除してからキー クラス ファイルを両方のアセンブリに追加すると、問題なく動作しますが、この種のコードの重複は避けたいので、問題は次のとおりです。書かれたとおりに機能するように PCL を構成するにはどうすればよいですか?
編集: もう少し情報... 私の PCL は、デスクトップの System.Xml.dll と Silverlight の System.Xml.Serialization.xml に存在するXmlSerializerを使用しています...完全なデスクトップ フレームワーク... したがって、この失敗はある程度理にかなっています。PCL の世界でのみ、これらのアセンブリ/クラスの一部が独自に分割されています。
この場合、XmlSerializer は実際にはC:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable\v4.0\Profile\Profile2\System.Xml.Serialization.dll (PCL によって参照される) にあります。 ..テストとして、Web プロジェクトに同じ参照を追加しました...ただし、Web プロジェクトの実行時に、次のような黄色の死の画面で失敗します。
ファイルまたはアセンブリ 'System.Xml.Serialization' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT からの例外: 0x80131040)