像许多其他人一样,我在部署ASP.Net MVC应用程序时收到以下错误:
无法加载V8接口组件; 验证您的应用程序是否安装了以下文件:ClearScriptV8-32.dll,ClearScriptV8-64.dll,v8-ia32.dll,v8-x64.dll
安装Clearscript是为了在页面请求中动态转换较少的文件.
我已经在ISS Express和ISS本地测试了我的应用程序.
正如这里建议的那样http://clearscript3.rssing.com/chan-14849437/all_p12.html我还将缺少的代码库作为资源包含在我的项目中.
ClearScriptV8-32.dll,ClearScriptV8-64.dll,v8-ia32.dll,v8-x64.dll都包含在bin文件夹中的文件夹ClearScript.V8英寸 删除此文件夹无法解决问题.
在我的智慧结束.任何帮助表示赞赏.
我尝试使用ClearScript加载TypeScript编译器以编译一些基本的TypeScript代码.
不幸的是,在执行TypeScript编译器源时,我收到此错误:
'WScript'未定义
这是我使用的LINQPad程序,将ClearScript dll和TypeScript编译器文件放在.linq程序旁边:
void Main()
{
using (var js = new Microsoft.ClearScript.Windows.JScriptEngine(Microsoft.ClearScript.Windows.WindowsScriptEngineFlags.DisableSourceManagement))
{
var typeScriptSource = File.ReadAllText(Path.Combine(Path.GetDirectoryName(Util.CurrentQueryPath), "tsc.js"));
js.Execute(typeScriptSource);
const string typeScriptCode = @"
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return ""Hello, "" + this.greeting;
}
}
function test()
{
var greeter = Greeter(""world"");
return greeter.greet();
}
";
js.Script.TypeScript.Compile(typeScriptCode);
object result = js.Script.test();
result.Dump();
}
}
#region Copy ClearScript to correct location …Run Code Online (Sandbox Code Playgroud) 我想运行一个简单的clearscript程序。为此,我创建了一个新的ConsoleProject并通过nuget添加了引用。
创建引擎时(第一行代码)
using (var engine = new V8ScriptEngine())
Run Code Online (Sandbox Code Playgroud)
我得到
未处理System.TypeLoadException _HResult = -2146233054
_message =无法加载V8接口程序集;验证您的应用程序是否安装了以下文件:ClearScriptV8-32.dll,ClearScriptV8-64.dll,v8-ia32.dll,v8-x64.dll
我只找到了dll:v8-ia32.dll,v8-x64.dll,但没有任何ClearscriptV8-*。dll
我将它们复制到了编译输出中,但是在运行console.exe时没有任何改变
我还从Github下载了软件包,但其中都没有包含这样的dll。我只有一个ClearScript.dll。
运行包含的控制台项目会引发相同的错误。
我从哪里获得这些dll?我想念什么?
我的项目输出文件夹如下所示:

我还运行了update V8命令。成功,但没有任何改变

然后我还安装了C ++ Redistribueable,如此处所述:在主机上找不到Clearscript文件
背景:
我们有一个客户端(Javascript)和服务器端(C#)的项目.需要在两侧运行计算逻辑,因此它用Javascript和C#编写.我们为C#版本类进行了许多单元测试.我们的目标是分享C#和Javascript实现的单元测试.
现在的情况:
我们能够在嵌入式JS引擎(Microsoft ClearScript)中运行Javascript代码.代码如下所示:
public decimal Calulate(decimal x, decimal y)
{
string script = @"
var calc = new Com.Example.FormCalculater();
var result = calc.Calculate({0}, {1});";
this.ScriptEngine.Evaluate(string.Format(script, x, y));
var result = this.ScriptEngine.Evaluate("result");
return Convert.ToDecimal(result);
}
Run Code Online (Sandbox Code Playgroud)
但是,编写这样的类需要付出很多努力.我们正在寻找一种在运行时动态创建这些类的方法.
例如,我们有一个C#类(在JS文件中也有JS版本):
public class Calculator {
public decimal Add(decimal x, decimal y){ ... }
public decimal Substract(decimal x, decimal y){ ... }
public decimal Multiply(decimal x, decimal y){ ... }
public decimal Divide(decimal x, decimal y){ ... }
}
Run Code Online (Sandbox Code Playgroud)
我们想要创建一个具有相同方法的动态类,但调用脚本引擎来调用相关的JS代码.
有可能吗?
我正在尝试为 Twilio 可编程聊天工具编写 C# 包装器。提供的库适用于 JS 客户端。我认为使用像 ClearScript (V8) 这样的工具可以让我根据需要包装 js。
网站上的示例代码是
const Chat = require('twilio-chat');
// Make a secure request to your backend to retrieve an access token.
// Use an authentication mechanism to prevent token exposure to 3rd parties.
const accessToken = '<your accessToken>';
Chat.Client.create(accessToken)
.then(client => {
// Use Programmable Chat client
});
Run Code Online (Sandbox Code Playgroud)
所以在我初始化之后
using (var engine = new V8ScriptEngine())
{
engine.Execute(@"
const Chat = require('twilio-chat.js');
const token = 'my token';
Chat.Client.create(token).then(client=>{
});
");
}
Run Code Online (Sandbox Code Playgroud)
“require”行上的程序错误,错误要求未定义。我读过 require …