如何在C#中执行VBScript

3
我们有一个遗留系统,允许客户通过VBScript自定义工作流程。例如,用户可以编写如下代码:
for each account in accounts {
   Dim acc as Integer
   .....
}

{...} 中的代码是VBScript。遗留系统由VB编写,并使用 ScriptControl 直接执行脚本。现在我们要将系统升级到 C# .NET 4.5,想要摆脱旧的 scriptcontrol,但仍然需要保留用户的脚本。

我的问题是,是否有可能从C#中执行vb脚本?

谢谢


你需要从C#打开WSH(Windows脚本宿主)来运行你的VBScript。 - RBarryYoung
是的。我们使用VBScript作为基于C#的Windows桌面CMS的脚本引擎。 - Uwe Keim
1
这是我的一篇文章,旨在帮助您:http://www.codeproject.com/Articles/18837/C-Interfaces-for-the-Windows-Scripting-Host - Uwe Keim
谢谢,我会先阅读这篇文章。 - Sean
2个回答

1

你可以从C#代码中执行VBScript。

Process scriptProc = new Process();
scriptProc.StartInfo.FileName = @"C:\text.vbs";
scriptProc.Start();
scriptProc.WaitForExit();
scriptProc.Close();

有一些重要的事情需要考虑。请查看这个答案。


谢谢你的回复,能否处理一个字符串而不是一个test.vbs文件?因为我们旧系统的脚本不仅仅是vbs,我们有自己的领域特定语言,就像我展示的代码一样,vbs在{...}内部,所以我需要读取文件,获取{...}内部的脚本并执行它。 - Sean
你不能把 VBScript 代码放在单独的文件中,然后按需执行吗? - diyoda_
我希望我能够将这些存在了10年的遗留系统中的大量旧脚本文件分离出来,但如果我提出这个要求,我的老板可能会杀了我。升级项目的难点在于我们必须让客户满意,而改变他们正在使用的脚本不会让他们感到满意 :) - Sean
在我看来,如果你要升级遗留系统,那么为什么还要担心这个问题呢?通常在这些升级过程中,我们不会触及到遗留系统,我们所做的只是通过接口与其进行交互,并输入输出相关数据以及使用新代码的接口触发系统。在更详细地解释情况后,你需要从专家那里获取一些帮助。可以尝试使用 C# 聊天室。 - diyoda_
你不需要提取和分离所有的脚本,但当你需要一个时,你保存在{...}之间的内容到一个临时脚本中并执行它。 - peter

1

我们最终决定迁移到IronPython而不是VBS,由于微软不再支持VBS。

所以现在是时候迈向前方了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接