トップ回答者
VBからC#<DLL>の起動について

質問
-
開発環境(VB6、C#(VS2008))
C#初心者です。
掲題の件についてですが、
VBの業務的なアプリケーションより、C#で作成のDLLを起動したいと思い、
C#フォーラムを参考にして、なんとか問題なく起動出来る事が出来ました。
その中で疑問になった事がありましたので、
どなたかご存じの方はご教授下さい。
☆REGASMについて
REGASM.exeにて、対象のC#DLLをレジストリへオプションなしで登録して
問題なく起動できるのですが、オプションの【/codebase】を付ける必要が
あるのかどうかです。
この情報も確認しましたが、今一つ理解できませんでした。
http://msdn.microsoft.com/ja-jp/library/tzat5yw6%28VS.80%29.aspx
特に共通的な意味合いを持つDLLでもなく、単に業務アプリケーションのDLLと
して使用したいだけなので、レジスト出来れば問題ないのでは?と単純に
考えてしまいます。
【/codebase】はどのような時に使用するものなのでしょうか?
回答
-
こんにちは、フォーラムオペレーターの高橋春樹です。
甕星さん、ご投稿ありがとうございます。
okaharaさん、初めまして。
MSDNフォーラムのご利用ありがとうございます。codebaseオプションの件ですが、GACにDLLを登録したくない場合で、
そのDLLを、他のアプリケーションと共通で使用したい場合に/codebaseオプションを付けて
DLLの場所を指定するのだと思います。
GACに配置されたDLLの場合は、codebaseオプションを付ける必要はありません。
もし認識が間違ってたらご指摘ください(^-^;)
マイクロソフト株式会社 フォーラム オペレーター 高橋春樹- 回答としてマーク 菊地俊介 2009年11月19日 9:00
すべての返信
-
こんにちは、フォーラムオペレーターの高橋春樹です。
甕星さん、ご投稿ありがとうございます。
okaharaさん、初めまして。
MSDNフォーラムのご利用ありがとうございます。codebaseオプションの件ですが、GACにDLLを登録したくない場合で、
そのDLLを、他のアプリケーションと共通で使用したい場合に/codebaseオプションを付けて
DLLの場所を指定するのだと思います。
GACに配置されたDLLの場合は、codebaseオプションを付ける必要はありません。
もし認識が間違ってたらご指摘ください(^-^;)
マイクロソフト株式会社 フォーラム オペレーター 高橋春樹- 回答としてマーク 菊地俊介 2009年11月19日 9:00
-
To:フォーラム オペレーター 高橋春樹 様
回答ありがとうございました。
私の認識も高橋様が書かれている内容とほぼ一致しております。
>codebaseオプションの件ですが、GACにDLLを登録したくない場合で、
>そのDLLを、他のアプリケーションと共通で使用したい場合に/codebaseオプションを付けて
>DLLの場所を指定するのだと思います。
今回、疑問となったのが、そのC#作成DLLが【/codebase】オプションなしで
REGASM.exeにて登録後、VBから呼べた事が疑問の始まりでした。
オプションの【/codebase】なしでVB側から呼べた事により
これを指定する意味は何なのだろうと?
指定がなくても動作するじゃないかと・・・
その疑問が解決しませんでしたので、このフォーラムを
利用させていただきました。
今回の作成DLL(C#)はGACに登録する内容のものではなく、
((登録したくないケース)という意味ですが)
単純にVB側APPから利用するという考えでした。
意味合い的には、パス指定で【/codebase】オプションを
つけるという内容には納得はしておりますので、
今回のケースはREGASM.exeにてDLLを登録する際に
パス指定プラス【/codebase】をつけようと思っております。
高橋様、回答ありがとうございました。 -
ぱらぐあい 様
回答ありがとうございます。
手順をもう一度見直し再確認したところ、
現象が確認出来ました。
当方が誤解していたようです。
回答を下さった方々、申し訳ありませんでした。
今回、誤解を生じた現象ですが、
vbプロジェクトを起動しデバッグ(呼出はC#作成dll)
①regasm c:\test\hoge.dll /codebase →vbで動作確認
②regasm hoge.dll /u →</unregister>
③regasm c:\test\hoge.dll →再度</codebase>なしで登録し動作確認
この手順で行うと、hoge.dllがメモリ上死んでいない!?様子。
dllが呼出可能なように見えただけでした。
vbプロジェクトを再度、開きなおし実行すると③のregasmが有効となって
おらずhoge.dllは呼出できませんでした。
ですので、</unregister>は行っていたのですが、確認手順の誤りから
自分で現象を誤解していたようです。
大変、すいませんでした。
皆様のおかげで、</codebase>の意味も私自身、深く理解出来ましたので
助かりました。
どうも、ありがとうございました。