vbscriptから.NETアセンブリ(dll)を実行することはできますか?
-
03-07-2019 - |
質問
vbscriptから.NET dllファイルを同期的に実行したい-これは可能ですか?はいの場合、GACアセンブリを実行できますか?
ありがとう、 Ofer
解決
AssemblyInfo.csファイルにComVisible属性を含めることにより、最初に.NETアセンブリをCOM可視にする必要があると思います:
[ComVisible(true)]
MSDNのこのページを参照してください:アセンブリのパッケージ化COMの場合
そして、VBScriptでは、COMコンポーネントにアクセスするのと同じ方法で、つまりCreateObjectまたはServer.CreateObjectを次のように使用して、これらのコンポーネントにアクセスできます。
Set testObj = CreateObject("MyNamespace.MyType")
GABはVBScriptからGACにアクセスすることも必須かもしれないと思いますが、私はこの方法でやっていないので、よくわかりません。
なぜVBScriptでそれをしたいのですか? VBScriptが意図したことを実行する.NETコンソールアプリケーションを作成しないのはなぜですか。 DLLは既に.NET上にあるので、それは問題ではないはずですよね?
編集:これを行う別の方法は、VBScriptから通常の実行可能プログラムのように呼び出すことができるDLL(またはDLLをラップするEXE)の代わりにコンソールEXEを作成することです。戻り結果を調べます。多くの要因に応じて、これはCOMコードを維持するよりも柔軟性があります。
他のヒント
VBScriptはCOMオブジェクトからのみコードを実行できるため、.NETコードのCOMラッパーを作成する必要があります。その後、.netコードを呼び出すことができます。
直接ではありません。
.NETアセンブリがCOMコンポーネントとして公開されている場合は、公開される可能性があります。