【问题标题】:.Net Replacement for VBScript (interop.msscriptcontrol.dll) DLL.Net 替换 VBScript (interop.msscriptcontrol.dll) DLL
【发布时间】:2012-05-15 08:36:36
【问题描述】:

我们正在使用 interop.msscriptcontrol.dll 来执行简单的 VBScript 变量代码(“Today - 1”之类的东西)。我们的应用程序是除此之外的非 COM 组件。我们已经搜索了 VBScript 的 .Net 替代品,但一直找不到。

.Net 有 VBScripting 替代品吗?

【问题讨论】:

  • 可能与以下内容重复:stackoverflow.com/questions/320814/…
  • 不,这些都不是我要问的。我想要一种在不使用 COM 的情况下在 .Net 中执行 VBScript 的方法。一般来说,这不是一种新的脚本编写方式。
  • 是的,你不会找到的。完全不清楚为什么您认为 COM 有问题。如果您不喜欢它,因为它是“老式”的,那么请好好看看 Windows 8 上的 Metro 和 WinRT。它的核心是大量的 COM。
  • 我们并不讨厌 COM。我们只是有几个潜在客户对其提出质疑,我们认为如果有替代品,那太好了,我们会使用它。

标签: .net dll com vbscript replace


【解决方案1】:

在以下示例中,我将让 WebBrowser 控件评估 VBScript 表达式“Now - 1”并将结果嵌入到 WebBrowser 的 document.title 中,以便我可以在 C# 中获取它:

WebBrowser wb = new WebBrowser();
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(
    (object _sender, WebBrowserDocumentCompletedEventArgs _e) =>
    {
        MessageBox.Show(wb.Document.Title);
    }
);
wb.DocumentText = @"
<HTML>
<HEAD>
<TITLE>Hello</TITLE>
<SCRIPT language=""VBScript"">
document.title = Now - 1
</SCRIPT>
</HEAD>
<BODY/>
</HTML>";

显然,这种方法存在以下问题:

  • 结果作为字符串处理
  • 结果需要异步处理
  • 糟糕的代码注入会导致无效结果
  • 它可能表现不佳,并可能导致您的应用出现瓶颈

我的直觉是这种方法可能比您当前使用的方法更糟糕。

【讨论】:

  • 对我来说,这是比使用 interop.msscriptcontrol.dll 更糟糕的方法,但是,你给了我一个很好的开箱即用的答案,所以我 +1 了你。将来我可能会对此有所帮助。
【解决方案2】:

我最终使用免费的 Codefluent 运行时引擎来替换 msscriptcontrol.dll:

http://www.softfluent.com/products/codefluent-runtime-client

【讨论】:

    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多