如何从 vbscript 调用 c# dll

Posted

技术标签:

【中文标题】如何从 vbscript 调用 c# dll【英文标题】:how to call c# dll from vbscript 【发布时间】:2013-06-28 10:37:42 【问题描述】:

您好,我正在使用以下代码创建一个 c# dll

使用系统; 使用 System.Collections.Generic; 使用 System.Text; 使用 System.Diagnostics; 使用 System.IO; 使用 System.Runtime.InteropServices; 命名空间图像导出 [ComVisible(真)] 公共类导出图像 [ComVisible(真)] 公共无效exportPNG(字符串pDirectory,字符串svgFileName,字符串输出文件名) 字符串参数= pDirectory+"res\\include\\highcharts-convert.js -infile "+pDirectory+"res\\graphs\\"+svgFileName+" -outfile "+pDirectory+"res\\graphs\\"+outputFileName +" -比例 2.5 - 宽度 1088"; /*使用 (StreamWriter writer = new StreamWriter("c:\\debug.txt", true)) writer.WriteLine("pDirectory=" +pDirectory); writer.WriteLine("arguments="+arguments); */ 进程 p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = false; p.StartInfo.FileName = pDirectory+"res\\bin\\phantomjs.exe"; p.StartInfo.Arguments = 参数; p.Start(); p.WaitForExit();

为了创建 dll,我在 VS2005 中进行如下配置

应用 程序集名称-> imageexport 默认命名空间 - > imageexport outputtype => 类库 启动对象->(未设置) 装配信息: a) 汇编版本 ->1 0 0 0 b)文件版本->1 0 0 0 c) 使 Assembly Com 可见 -> 选中 构建 配置 -> 活动(调试) 平台 -> 活动(任何 CPU) 一般的 : a) 条件编译符号 -> 空白 b)定义调试常量->选中 c) 定义跟踪常数 -> 选中 d) 平台目标 -> 任何 CPU e) 允许不安全代码 -> 未检查 f) 优化代码 -> 未选中 g) 警告级别 -> 4 h) Supperess 警告 -> 空白 i) 处理警告错误 -> 无

在此之后,我使用 .net 2.0 的 regasm 注册 imageexport.dll

现在,当我查看注册表时,我在 HKEY_CLASSES_ROOT 下找到了 imageexport.ExportImage。

现在在 vbscript 中,下面的代码用于创建对象并调用函数

暗淡对象 设置 obj = CreateObject("imageexport.ExportImage") obj.exportPNG rvPAWZDirectoryPath&"\","SVGData_"&Session("export_time")&".svg","Export_" & export_time & ".png"

但这会在 VBSCript 中的 createObject 行给出名为“UnknownException”的异常。请告诉我问题出在哪里

【问题讨论】:

如果从 C# 客户端运行 exportPNG 会发生什么?只是想知道那是不是在扔。 不,当我在 c# 控制台应用程序中使用这个 dll 时,它工作正常。 嗨,现在当我取消注释文件编写代码并在系统重新启动后运行它时,debug.txt 正在创建正常。现在唯一的问题是 phantomjs.exe 没有被执行,而当我从控制台应用程序调用它时它会被执行。 【参考方案1】:

我认为您应该将您的 Dll 注册为:

 C:\Windows\Microsoft.NET\Framework64\v4.0.30319>regasm yourDllPath /codebase

现在您可以创建 Dll 的对象了。

【讨论】:

以上是关于如何从 vbscript 调用 c# dll的主要内容,如果未能解决你的问题,请参考以下文章

ASP 子程序北京上海

从 VBScript 调用任何带有俄语名称的文件/脚本失败

vbscript 从vb.net后面的代码调用javascript函数

如何在带有命令行参数的 vbscript 中调用函数?

WMI VBScript 与 C#

如何从 cmd 获取变量并在 vbscript 中显示 - Vbscript