- - PR -
モジュール(dllファイル)の構成について
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-03 11:45
/binフォルダでは余計なDLLは消しています。
現状は、同じネームスペースを持つクラスが別ファイルで作成されているあたりが怪しいかなと考えています。 試しに、簡単なプログラムで [test.vb] Imports System Imports Sample.Tests Namespace Sample Module Module1 Sub Main() Dim t2 as Test2 = New Test2() Console.Write(t2.gets()) Dim t3 as Test3= New Test3() Console.Write(t3.gets()) End Sub End Module End Namespace [test2.vb] Imports System Namespace Sample public class Test2 public function gets() as String return "ret" End function End Class End Namespace [test3.vb] Imports System Namespace Sample.Tests public class Test3 public function gets() as String return "test3" End function End Class End Namespace という3つのソースを書き、test2とtest3をまとめて1つのdllにコンパイルし、test.vbをexeにして、test.exeを実行したところ、下記のエラーが発生しました。 [発生したエラー] ハンドルされていない例外 : System.TypeLoadException: アセンブリ 'test, Version=0.0.0.0, Cu lture=neutral, PublicKeyToken=null' から型 'Sample.Test2' を読み込めません。 at Sample.Module1.Main() 単純に全部まとめてしまってもうごかないんですね。もう少し、調べてみたいと思います。 | ||||||||||||||||
|
投稿日時: 2006-02-03 11:55
というか一意にしなきゃ判断できないですよね?
そのために、名前空間というものが存在するわけですが... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-02-03 13:06
南部です。
'test, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' これから察するに、test.dllになってませんか? test.exeと同じアセンブリ名だから見つからないのでしょう。 >vbc /t:library /out:testLib.dll test2.vb test3.vb >vbc /t:exe /out:test.exe /r:testLib.dll test.vb >test.exe rettest3 | ||||||||||||||||
|
投稿日時: 2006-02-03 13:10
一意という意味では、同じネームスペースに同じ名前のクラスは存在しませんし、特にクラス名が重複しているわけでもないです。 | ||||||||||||||||
|
投稿日時: 2006-02-03 13:16
多分、ファイル単位、名前空間単位、アセンブリ単位がごっちゃになっているだけかもしれないです。
そうだとしてもクラス名が違えばよい。別ファイルとか関係ないです。また、アセンブリが違うとか同じとかも関係ないです。 _________________ 囚人のジレンマな日々 |