我想从 C# 程序集中执行 JavaScript 代码,并将 JavaScript 代码的结果返回到调用 C# 代码。
定义我不想做的事情更容易:
我想做的是用 JavaScript 编写单元测试,然后让单元测试输出 JSON,甚至纯文本也可以。然后我想要一个通用的 C# 类/可执行文件,它可以加载包含 JS 的文件,运行 JS 单元测试,废弃/加载结果,并在构建后任务期间返回包含详细信息的通过/失败。
我认为使用旧的 ActiveX ScriptControl 是可能的,但似乎应该有一种 .NET 方法来做到这一点,而不需要使用 SilverLight、DLR 或任何其他尚未发布的东西。有人有主意吗?
update: 来自布拉德·艾布拉姆斯博客 http://blogs.msdn.com/brada/articles/239857.aspx
namespace Microsoft.JScript.Vsa
{
[Obsolete("There is no replacement for this feature. " +
"Please see the ICodeCompiler documentation for additional help. " +
"http://go.microsoft.com/fwlink/?linkid=14202")]
澄清:
我们对 JavaScript 函数进行了单元测试,这些函数是使用 JSUnit 框架用 JavaScript 编写的。现在,在构建过程中,我们必须手动加载网页并单击按钮以确保所有 JavaScript 单元测试都通过。我希望能够在运行自动化 C# 单元测试时在构建后过程中执行测试,并与 C# 单元测试一起报告成功/失败,并将它们用作是否构建的指示器被打破。
该代码应该是非常不言自明的,所以我将其发布。
<add assembly="Microsoft.Vsa, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies>
using Microsoft.JScript;
public class MyClass {
public static Microsoft.JScript.Vsa.VsaEngine Engine = Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
public static object EvaluateScript(string script)
{
object Result = null;
try
{
Result = Microsoft.JScript.Eval.JScriptEvaluate(JScript, Engine);
}
catch (Exception ex)
{
return ex.Message;
}
return Result;
}
public void MyMethod() {
string myscript = ...;
object myresult = EvaluateScript(myscript);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)