DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Assembly.Location の違いによるシリアライズ操作の失敗について

環境/言語:[XP / C# / Framework 2.0]
分類:[.NET]

現在プロジェクトの共通ライブラリの1つとして、フォームに配置するコンポー
ネントを作成しております。

そのコンポーネントの仕様として、デザイナ上で設定した各種プロパティの値を
シリアライズを使ってXML形式に保存・読込(+プロパティへ設定)する機能が
あります。
※プロパティの値を外部に保存し、テンプレート的な使い方を目的としています。

機能の方は然程つまづく事無く実装できまして、アプリが動いている際に保存
読込が行える事を確認したのですが、いざ同じメソッドをデザイナ上で実行すると
以下の様なエラーが表示されてしまいました。

---------------------------------------------------------------------------------

[A]xxxxx.Library.Windows.Forms.FunctinoPattern[]
[B]xxxxx.Library.Windows.Forms.FunctinoPattern[]

型 A は 'hogeasm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
  (コンテキスト'LoadNeither'、
   位置 'C:\Documents and Settings\xxxx\Local Settings\Application Data\Microsoft\
         VisualStudio\8.0\ProjectAssemblies\bmbsyvka01\hogeasm.dll') から生成されます. 

型 B は 'hogeasm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
  (コンテキスト'LoadNeither'、
   位置 'C:\Documents and Settings\xxxx\Local Settings\Application Data\Microsoft\
         VisualStudio\8.0\ProjectAssemblies\ctdpulbm01\hogeasm.dll') から生成されます

 にキャストできません。

---------------------------------------------------------------------------------

どうも Assembly.Location の違いから、同じファイルで有ったとしても別モノと
認識してデシリアライズが失敗している様なのですが、これの回避・解決方法が
わかりません。

自分なりに調べて見た所 GAC に登録すれば良いと言うような情報を見つけたのですが
hogeasm.dll のインストール先は最終的にアプリと同じ場所としたいのと、hogeasm.dll
は今後も更新が行われるので、都度 GAC に登録して貰うのは面倒なので避けたいと
考えております。

どなたかGACに登録する以外で回避・解決方法をご存じでしたら教えて頂けないでしょうか。

以上 宜しくお願い致します。
■No24046に返信(まことさんの記事)
> シリアライズを使ってXML形式に保存・読込

使用しているシリアライザは何ですか?
■No24047に返信(魔界の仮面弁士さんの記事)

> 使用しているシリアライザは何ですか?

魔界の仮面弁士さん、返信ありがとうございます。

情報が不足していて申し訳ありません、使用しているシリアライザは XmlSerializer になります。

要件として「設定値をテキストで保存し、エディタで加修を行う」と言うものが有る為これを使用しています。

逆に言うとテキストで保存・読込が出来ればいいので昔ながらのINIファイル的な物
でも良いのですが…これは最終手段としたいと考えております。

以上です。

DOBON.NET | プログラミング道 | プログラミング掲示板