.Net替换VBScript(interop.msscriptcontrol.dll)dll

.Net替换VBScript(interop.msscriptcontrol.dll)dll,.net,dll,com,vbscript,replace,.net,Dll,Com,Vbscript,Replace,我们使用interop.msscriptcontrol.dll来执行简单的VBScript变量代码(“Today-1”之类的东西)。除此之外,我们的应用程序是非COM组件。我们已搜索.Net替代VBScript,但找不到 是否有VBScripting替换.Net?在下面的示例中,我将使WebBrowser控件计算VBScript表达式“Now-1”,并将结果嵌入WebBrowser的document.title中,以便我可以在C#中获取它: WebBrowser wb=新的WebBrowser(

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


是否有VBScripting替换.Net?

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

WebBrowser wb=新的WebBrowser();
wb.DocumentCompleted+=新的WebBrowserDocumentCompletedEventHandler(
(对象发送方,WebBrowserDocumentCompletedEventArgs)=>
{
MessageBox.Show(wb.Document.Title);
}
);
wb.DocumentText=@”
你好
document.title=Now-1
";
显然,这种方法存在以下问题:

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

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

我最终使用了免费的Codefluent运行时引擎来取代MSScript Control.dll:


可能的重复:另一个重复:不,这两个都不是我想要的。我想要一种不用COM在.Net中编写VBScript的方法。一般来说,这不是一种编写脚本的新方法。是的,你不会发现这一点。我们完全不清楚为什么你认为COM有问题。如果你不喜欢它,因为它是“老式的”,那么好好看看Windows8上的Metro和WinRT。我们并不讨厌COM。我们只是有几个潜在客户对它提出了疑问,我们认为如果有替代品,那就很好,我们会使用它。对我来说,这比使用interop.msscriptcontrol.dll更糟糕,但是,你给了我一个很好的开箱即用的答案,所以我对你加1。我将来可能会用到这个。
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>";