94### 前提・実現したいこと
<前提>
アプリケーション→ライブラリ→元データ(データ種類はXMLやCSVなど複数)という流れのうち、ライブラリの開発をしています。
このライブラリでは、元データから必要データを抽出し、Json形式に再編成して、アプリケーション側に提供するという流れの動作を行います。
ライブラリはインタフェースDLL、元データ種類別に編集を行うパーツDLL、インターフェースDLLおよびパーツDLLが使用する外部ファイル、外部ライブラリなどを保持するフォルダ単位で提供します。
アプリケーション側は、exeファイルと同階層にフォルダを配置して使用、という形になります。
アプリケーション側では、app.configのprobingタグのprivatePath属性にライブラリのフォルダ情報を入れ、機能させていました。
例)
Sample
├Interface.dll
├Parts
│ └Parts.dll
└Lib
" └外部ライブラリ.dll
<実現したいこと>
ライブラリもアプリケーションも、共にJsonを使用するにあたって、Newtonsoft.Jsonを参照設定して使用します。
このNewtonsoft.Jsonの読み込み先ファイルをライブラリとアプリケーションで、それぞれ別にしたいです。
発生している問題・エラーメッセージ
<発生している問題>
app.configのprobingタグのprivatePath属性使用のままでは、最新のDLLをライブラリのフォルダ(例だとLibフォルダ)に持たせる必要がでてきます。
また、それをしたとしても、privatePath属性では、先に見つけたアセンブリを読み込もうとするため、ライブラリ、アプリケーションのアセンブリバージョンが異なれば、いずれかでFileLoadExceptionが発生します。
該当のソースコード
・C#
試したこと
①app.configのcodeBaseタグを用いてアプリケーションおよびライブラリが使用する外部ライブラリの情報を全て記載。
この方法は正常動作させることはできましたが、今後ライブラリの追加パーツDLLなどで外部ライブラリが追加になった場合、アセンブリ名、バージョン情報、ファイルパスなどをアプリケーション側に伝え、かつapp.configにcodeBaseを追加してもらう必要が出る。
②リフレクション(System.Refrection)により、静的参照をやめ、ファイルパス指定で動的参照に変更。
こちらも正常動作はするが、修正に伴う影響範囲が広い。
また、処理数増加に伴う可読性低下なども危惧される。
極力、ライブラリ側も参照設定での読み込みを維持したい。
補足情報(FW/ツールのバージョンなど)
<開発環境>
・.Net Framework 4.5
・Visual Studio 2015
<その他補足>
COMやWCFなどで、呼び出し元のアプリケーションとは完全別個にすれば可能ではないか、という案が挙がっています。
こちらは動作未確認です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/22 22:45
2019/02/23 02:40
2019/02/23 03:17
2019/02/23 04:53
2019/02/23 05:03
2019/02/23 22:54