質問編集履歴
3
誤記
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
提供
|
1
|
+
提供先アプリとの外部ライブラリの参照設定バージョン違い
|
test
CHANGED
File without changes
|
2
半角スペースが機能しないため
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,15 +16,17 @@
|
|
16
16
|
|
17
17
|
Sample
|
18
18
|
|
19
|
-
|
19
|
+
├Interface.dll
|
20
20
|
|
21
|
-
|
21
|
+
├Parts
|
22
22
|
|
23
|
-
|
23
|
+
│ └Parts.dll
|
24
24
|
|
25
|
-
|
25
|
+
└Lib
|
26
26
|
|
27
|
-
|
27
|
+
" └外部ライブラリ.dll
|
28
|
+
|
29
|
+
|
28
30
|
|
29
31
|
<実現したいこと>
|
30
32
|
|
1
内容整理
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,38 +1,46 @@
|
|
1
1
|
94### 前提・実現したいこと
|
2
2
|
|
3
|
+
<前提>
|
3
4
|
|
5
|
+
アプリケーション→ライブラリ→元データ(データ種類はXMLやCSVなど複数)という流れのうち、ライブラリの開発をしています。
|
4
6
|
|
5
|
-
|
7
|
+
このライブラリでは、元データから必要データを抽出し、Json形式に再編成して、アプリケーション側に提供するという流れの動作を行います。
|
6
8
|
|
7
|
-
|
9
|
+
ライブラリはインタフェースDLL、元データ種類別に編集を行うパーツDLL、インターフェースDLLおよびパーツDLLが使用する外部ファイル、外部ライブラリなどを保持するフォルダ単位で提供します。
|
8
10
|
|
9
|
-
|
11
|
+
アプリケーション側は、exeファイルと同階層にフォルダを配置して使用、という形になります。
|
10
12
|
|
11
|
-
|
13
|
+
アプリケーション側では、app.configのprobingタグのprivatePath属性にライブラリのフォルダ情報を入れ、機能させていました。
|
12
14
|
|
13
|
-
|
15
|
+
例)
|
14
16
|
|
17
|
+
Sample
|
15
18
|
|
19
|
+
├Interface.dll
|
20
|
+
|
21
|
+
├Parts
|
22
|
+
|
23
|
+
│ └Parts.dll
|
24
|
+
|
25
|
+
└Lib
|
26
|
+
|
27
|
+
└外部ライブラリ.dll
|
28
|
+
|
29
|
+
<実現したいこと>
|
30
|
+
|
31
|
+
ライブラリもアプリケーションも、共にJsonを使用するにあたって、Newtonsoft.Jsonを参照設定して使用します。
|
32
|
+
|
33
|
+
このNewtonsoft.Jsonの読み込み先ファイルをライブラリとアプリケーションで、それぞれ別にしたいです。
|
16
34
|
|
17
35
|
|
18
36
|
|
19
37
|
### 発生している問題・エラーメッセージ
|
20
38
|
|
39
|
+
<発生している問題>
|
21
40
|
|
41
|
+
app.configのprobingタグのprivatePath属性使用のままでは、最新のDLLをライブラリのフォルダ(例だとLibフォルダ)に持たせる必要がでてきます。
|
22
42
|
|
23
|
-
ライブラリ実装段階の検討では、アプリケーション側が保持するapp.configのprobingタグのprivatePass属性を固定することでアプリケーション側に提供する方針でいました。
|
24
|
-
|
25
|
-
た
|
43
|
+
また、それをしたとしても、privatePath属性では、先に見つけたアセンブリを読み込もうとするため、ライブラリ、アプリケーションのアセンブリバージョンが異なれば、いずれかでFileLoadExceptionが発生します。
|
26
|
-
|
27
|
-
このバージョン違いがある場合、例外FileLoadException(アセンブリバージョン違い)が発生しました。
|
28
|
-
|
29
|
-
そのため、ライブラリが参照する外部ライブラリのバージョンを固定したいと考えています。
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
エラーメッセージ
|
34
|
-
|
35
|
-
動作確認用アプリケーションエラーで、アセンブリ違いのエラーが出ます。
|
36
44
|
|
37
45
|
|
38
46
|
|
@@ -40,7 +48,7 @@
|
|
40
48
|
|
41
49
|
|
42
50
|
|
43
|
-
C#
|
51
|
+
・C#
|
44
52
|
|
45
53
|
|
46
54
|
|
@@ -48,20 +56,30 @@
|
|
48
56
|
|
49
57
|
|
50
58
|
|
51
|
-
①app.configのcod
|
59
|
+
①app.configのcodeBaseタグを用いてアプリケーションおよびライブラリが使用する外部ライブラリの情報を全て記載。
|
52
60
|
|
61
|
+
この方法は正常動作させることはできましたが、今後ライブラリの追加パーツDLLなどで外部ライブラリが追加になった場合、アセンブリ名、バージョン情報、ファイルパスなどをアプリケーション側に伝え、かつapp.configにcodeBaseを追加してもらう必要が出る。
|
62
|
+
|
53
|
-
②リフレクション(System.Refre
|
63
|
+
②リフレクション(System.Refrection)により、静的参照をやめ、ファイルパス指定で動的参照に変更。
|
64
|
+
|
65
|
+
こちらも正常動作はするが、修正に伴う影響範囲が広い。
|
66
|
+
|
67
|
+
また、処理数増加に伴う可読性低下なども危惧される。
|
68
|
+
|
69
|
+
極力、ライブラリ側も参照設定での読み込みを維持したい。
|
54
70
|
|
55
71
|
|
56
72
|
|
57
73
|
### 補足情報(FW/ツールのバージョンなど)
|
58
74
|
|
75
|
+
<開発環境>
|
59
76
|
|
77
|
+
・.Net Framework 4.5
|
60
78
|
|
61
|
-
|
79
|
+
・Visual Studio 2015
|
62
80
|
|
63
|
-
|
81
|
+
<その他補足>
|
64
82
|
|
65
|
-
|
83
|
+
COMやWCFなどで、呼び出し元のアプリケーションとは完全別個にすれば可能ではないか、という案が挙がっています。
|
66
84
|
|
67
|
-
|
85
|
+
こちらは動作未確認です。
|