質問編集履歴

6

内容修正

2019/09/28 07:48

投稿

ocelot
ocelot

スコア18

test CHANGED
File without changes
test CHANGED
@@ -198,7 +198,7 @@
198
198
 
199
199
  度々、必要な情報が抜けていて申し訳ありません。.NETFramework3.5でビルドしました。Win10,VisualStudio2019です。ClassLibrary1.dllはC:\Users\UserName\source\repos\DotNETDllImportConsole\DotNETDllImportConsole\bin\Debug\testに置いてあり、カレントディレクトリはDebugです。
200
200
 
201
- 皆さんの回答を参考にして色々試してみたのですがダメでした。前のコードに少し足して実行したところをコンソールに以下の文章が表示されました。
201
+ 皆さんの回答を参考にして試してみした。前のコードに少し足して実行したところをコンソールに以下の文章が表示されました。
202
202
 
203
203
 
204
204
 

5

文章の追記

2019/09/28 07:48

投稿

ocelot
ocelot

スコア18

test CHANGED
File without changes
test CHANGED
@@ -94,6 +94,8 @@
94
94
 
95
95
  追記
96
96
 
97
+ ----
98
+
97
99
  ```C#
98
100
 
99
101
  using System;

4

文章の追記

2019/09/28 07:47

投稿

ocelot
ocelot

スコア18

test CHANGED
File without changes
test CHANGED
@@ -87,3 +87,139 @@
87
87
  原因がわかる方教えていだだけないでしょうか。
88
88
 
89
89
  よろしくお願いします。
90
+
91
+
92
+
93
+
94
+
95
+ 追記
96
+
97
+ ```C#
98
+
99
+ using System;
100
+
101
+ using System.Collections.Generic;
102
+
103
+ using System.Linq;
104
+
105
+ using System.Text;
106
+
107
+ using System.Reflection;
108
+
109
+ using System.IO;
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+ namespace DotNETDllImportConsole
118
+
119
+ {
120
+
121
+ class Program
122
+
123
+ {
124
+
125
+ static void Main(string[] args)
126
+
127
+ {
128
+
129
+ StreamReader sr = new StreamReader(@"C:\Users\UserName\source\repos\DotNETDllImportConsole\DotNETDllImportConsole\bin\Debug\test\text.txt", Encoding.GetEncoding("UTF-8"));
130
+
131
+        //このtext.txtにはuntiと記入されています   
132
+
133
+ string str = sr.ReadToEnd();
134
+
135
+
136
+
137
+ sr.Close();
138
+
139
+
140
+
141
+ Console.WriteLine(str);
142
+
143
+
144
+
145
+ ;
146
+
147
+ string mypath = @"C:\Users\UserName\source\repos\DotNETDllImportConsole\DotNETDllImportConsole\bin\Debug\test\ClassLibrary1.dll";
148
+
149
+ Assembly asm = Assembly.LoadFrom(mypath);
150
+
151
+ Module mod = asm.GetModule(mypath);
152
+
153
+ if (mod == null)
154
+
155
+ {
156
+
157
+ Console.WriteLine("@@@");
158
+
159
+ }
160
+
161
+ System.Type type = mod.GetType("namespace1.Class1");
162
+
163
+ if (type != null)
164
+
165
+ {
166
+
167
+ Object obj = Activator.CreateInstance(type);
168
+
169
+
170
+
171
+ Type[] types = new Type[2];
172
+
173
+ types[0] = typeof(string);
174
+
175
+ types[1] = typeof(string);
176
+
177
+ MethodInfo method = type.GetMethod("method", types);
178
+
179
+ object ret = method.Invoke(obj, new string[] { "abc", "def" });
180
+
181
+
182
+
183
+ Console.WriteLine(ret);
184
+
185
+ }
186
+
187
+ }
188
+
189
+ }
190
+
191
+ }
192
+
193
+
194
+
195
+ ```
196
+
197
+ 度々、必要な情報が抜けていて申し訳ありません。.NETFramework3.5でビルドしました。Win10,VisualStudio2019です。ClassLibrary1.dllはC:\Users\UserName\source\repos\DotNETDllImportConsole\DotNETDllImportConsole\bin\Debug\testに置いてあり、カレントディレクトリはDebugです。
198
+
199
+ 皆さんの回答を参考にして色々試してみたのですがダメでした。前のコードに少し足して実行したところをコンソールに以下の文章が表示されました。
200
+
201
+
202
+
203
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
204
+
205
+ unti
206
+
207
+ @@@
208
+
209
+
210
+
211
+ ハンドルされていない例外: System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
212
+
213
+ 場所 DotNETDllImportConsole.Program.Main(String[] args) 場所 C:\Users\UserName\source\repos\DotNETDllImportConsole\DotNETDllImportConsole\Program.cs:行 33
214
+
215
+ 続行するには何かキーを押してください . . .
216
+
217
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
218
+
219
+
220
+
221
+ text.txtの文字を読み取ってコンソールに表示しているため絶対パスの書き方はあっているのではないかと思います。カレントディレクトリにClassLibrary1.dllを移動して、string mypath = @"ClassLibrary1.dll";とするとうまくいきます。
222
+
223
+ 至らない文章を混乱させてしまったかもしれませんがもし原因のわかる方がいればご教授いただけますと幸いです。
224
+
225
+ よろしくお願いします。

3

内容修正

2019/09/28 07:46

投稿

ocelot
ocelot

スコア18

test CHANGED
File without changes
test CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
  ```
68
68
 
69
- visualstudio2019で書いています。ClassLibrary1.dllをtestに入れて使いたいと思っています。
69
+ visualstudio2019で書いています。Windows10です。ClassLibrary1.dllをtestに入れて使いたいと思っています。
70
70
 
71
71
 
72
72
 

2

タイトル

2019/09/26 18:22

投稿

ocelot
ocelot

スコア18

test CHANGED
@@ -1 +1 @@
1
- C#で絶対パスが通りません・・・
1
+ C#で絶対パス、相対パスが通りません・・・
test CHANGED
File without changes

1

コードを読みやすく修正

2019/09/26 17:35

投稿

ocelot
ocelot

スコア18

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,5 @@
1
+ ```c#
2
+
1
3
  using System;
2
4
 
3
5
  using System.Collections.Generic;
@@ -62,11 +64,11 @@
62
64
 
63
65
  }
64
66
 
67
+ ```
68
+
69
+ visualstudio2019で書いています。ClassLibrary1.dllをtestに入れて使いたいと思っています。
65
70
 
66
71
 
67
- string mypath = "ClassLibrary1.dll";
68
-
69
- とするとうまくいくのですが、ClassLibrary1.dllをtestフォルダに入れて
70
72
 
71
73
  string mypath = "test\ClassLibrary1.dll";
72
74
 
@@ -78,6 +80,10 @@
78
80
 
79
81
  絶対パスにしてもうまく通りません。
80
82
 
83
+ string mypath = "ClassLibrary1.dll";
84
+
85
+ とするとうまくいくので他のコードは合ってると思うのですが原因がわかりません。
86
+
81
87
  原因がわかる方教えていだだけないでしょうか。
82
88
 
83
89
  よろしくお願いします。