teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

内容修正

2019/09/28 07:48

投稿

ocelot
ocelot

スコア18

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

5

文章の追記

2019/09/28 07:48

投稿

ocelot
ocelot

スコア18

title CHANGED
File without changes
body CHANGED
@@ -46,6 +46,7 @@
46
46
 
47
47
 
48
48
  追記
49
+ ----
49
50
  ```C#
50
51
  using System;
51
52
  using System.Collections.Generic;

4

文章の追記

2019/09/28 07:47

投稿

ocelot
ocelot

スコア18

title CHANGED
File without changes
body CHANGED
@@ -42,4 +42,72 @@
42
42
  string mypath = "ClassLibrary1.dll";
43
43
  とするとうまくいくので他のコードは合ってると思うのですが原因がわかりません。
44
44
  原因がわかる方教えていだだけないでしょうか。
45
+ よろしくお願いします。
46
+
47
+
48
+ 追記
49
+ ```C#
50
+ using System;
51
+ using System.Collections.Generic;
52
+ using System.Linq;
53
+ using System.Text;
54
+ using System.Reflection;
55
+ using System.IO;
56
+
57
+
58
+
59
+ namespace DotNETDllImportConsole
60
+ {
61
+ class Program
62
+ {
63
+ static void Main(string[] args)
64
+ {
65
+ StreamReader sr = new StreamReader(@"C:\Users\UserName\source\repos\DotNETDllImportConsole\DotNETDllImportConsole\bin\Debug\test\text.txt", Encoding.GetEncoding("UTF-8"));
66
+        //このtext.txtにはuntiと記入されています   
67
+ string str = sr.ReadToEnd();
68
+
69
+ sr.Close();
70
+
71
+ Console.WriteLine(str);
72
+
73
+ ;
74
+ string mypath = @"C:\Users\UserName\source\repos\DotNETDllImportConsole\DotNETDllImportConsole\bin\Debug\test\ClassLibrary1.dll";
75
+ Assembly asm = Assembly.LoadFrom(mypath);
76
+ Module mod = asm.GetModule(mypath);
77
+ if (mod == null)
78
+ {
79
+ Console.WriteLine("@@@");
80
+ }
81
+ System.Type type = mod.GetType("namespace1.Class1");
82
+ if (type != null)
83
+ {
84
+ Object obj = Activator.CreateInstance(type);
85
+
86
+ Type[] types = new Type[2];
87
+ types[0] = typeof(string);
88
+ types[1] = typeof(string);
89
+ MethodInfo method = type.GetMethod("method", types);
90
+ object ret = method.Invoke(obj, new string[] { "abc", "def" });
91
+
92
+ Console.WriteLine(ret);
93
+ }
94
+ }
95
+ }
96
+ }
97
+
98
+ ```
99
+ 度々、必要な情報が抜けていて申し訳ありません。.NETFramework3.5でビルドしました。Win10,VisualStudio2019です。ClassLibrary1.dllはC:\Users\UserName\source\repos\DotNETDllImportConsole\DotNETDllImportConsole\bin\Debug\testに置いてあり、カレントディレクトリはDebugです。
100
+ 皆さんの回答を参考にして色々試してみたのですがダメでした。前のコードに少し足して実行したところをコンソールに以下の文章が表示されました。
101
+
102
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
103
+ unti
104
+ @@@
105
+
106
+ ハンドルされていない例外: System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
107
+ 場所 DotNETDllImportConsole.Program.Main(String[] args) 場所 C:\Users\UserName\source\repos\DotNETDllImportConsole\DotNETDllImportConsole\Program.cs:行 33
108
+ 続行するには何かキーを押してください . . .
109
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
110
+
111
+ text.txtの文字を読み取ってコンソールに表示しているため絶対パスの書き方はあっているのではないかと思います。カレントディレクトリにClassLibrary1.dllを移動して、string mypath = @"ClassLibrary1.dll";とするとうまくいきます。
112
+ 至らない文章を混乱させてしまったかもしれませんがもし原因のわかる方がいればご教授いただけますと幸いです。
45
113
  よろしくお願いします。

3

内容修正

2019/09/28 07:46

投稿

ocelot
ocelot

スコア18

title CHANGED
File without changes
body CHANGED
@@ -32,7 +32,7 @@
32
32
  }
33
33
  }
34
34
  ```
35
- visualstudio2019で書いています。ClassLibrary1.dllをtestに入れて使いたいと思っています。
35
+ visualstudio2019で書いています。Windows10です。ClassLibrary1.dllをtestに入れて使いたいと思っています。
36
36
 
37
37
  string mypath = "test\ClassLibrary1.dll";
38
38
 

2

タイトル

2019/09/26 18:22

投稿

ocelot
ocelot

スコア18

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

1

コードを読みやすく修正

2019/09/26 17:35

投稿

ocelot
ocelot

スコア18

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,4 @@
1
+ ```c#
1
2
  using System;
2
3
  using System.Collections.Generic;
3
4
  using System.Linq;
@@ -30,13 +31,15 @@
30
31
  }
31
32
  }
32
33
  }
34
+ ```
35
+ visualstudio2019で書いています。ClassLibrary1.dllをtestに入れて使いたいと思っています。
33
36
 
34
- string mypath = "ClassLibrary1.dll";
35
- とするとうまくいくのですが、ClassLibrary1.dllをtestフォルダに入れて
36
37
  string mypath = "test\ClassLibrary1.dll";
37
38
 
38
39
  string mypath = @"test\ClassLibrary1.dll";
39
40
 
40
41
  絶対パスにしてもうまく通りません。
42
+ string mypath = "ClassLibrary1.dll";
43
+ とするとうまくいくので他のコードは合ってると思うのですが原因がわかりません。
41
44
  原因がわかる方教えていだだけないでしょうか。
42
45
  よろしくお願いします。