C# 用C在Win 8.1脉轮中执行JS的一个失败的最小示例#
我试图通过以下代码执行一小段JS(使用MSDN中Chakra主机示例中的本机类): 问题是它返回一个“ScriptCompile”错误,没有我能够发现的额外细节C# 用C在Win 8.1脉轮中执行JS的一个失败的最小示例#,c#,javascript,chakra,C#,Javascript,Chakra,我试图通过以下代码执行一小段JS(使用MSDN中Chakra主机示例中的本机类): 问题是它返回一个“ScriptCompile”错误,没有我能够发现的额外细节 有人能透露我错过了什么/做了什么/困惑了什么吗?我修改了我的Native.throwiferor的实现,以便在脚本编译错误的情况下,从errorObject中获取一些值。像这样: var message = errorObject .GetProperty("message") .ToString(); var sour
有人能透露我错过了什么/做了什么/困惑了什么吗?我修改了我的
Native.throwiferor的实现,以便在脚本编译错误的情况下,从errorObject中获取一些值。像这样:
var message = errorObject
.GetProperty("message")
.ToString();
var source = errorObject
.GetProperty("source")
.ToString();
var line = (int)errorObject
.GetProperty("line")
.ToDouble();
var column = (int)errorObject
.GetProperty("column")
.ToDouble();
var length = (int)errorObject
.GetProperty("length")
.ToDouble();
throw new JavaScriptParseException(error, message, source, line, column, length);
这至少可以为您提供更多信息。我修改了我的Native.throwiferor的实现,以便在出现ScriptCompile错误的情况下,从errorObject中获取一些值。像这样:
var message = errorObject
.GetProperty("message")
.ToString();
var source = errorObject
.GetProperty("source")
.ToString();
var line = (int)errorObject
.GetProperty("line")
.ToDouble();
var column = (int)errorObject
.GetProperty("column")
.ToDouble();
var length = (int)errorObject
.GetProperty("length")
.ToDouble();
throw new JavaScriptParseException(error, message, source, line, column, length);
这至少会让你得到更多的信息。我怀疑你还在努力解决这个问题。。。但我还是找到了答案
如果查看jsrt.h,您将看到所有本机函数在使用字符串参数时都使用wchar\u t,但是DllImport属性没有指定字符集,因此它默认为ANSI
我在Native.cs文件中进行了查找/替换,并将所有DllImport属性更改为
[DllImport(“jscript.dll”,CharSet=CharSet.Unicode)]
。。。现在我的代码运行良好。我已经向GitHub上的示例所有者发送了一个请求,以修复此问题。更新目前在我的文件夹中,我怀疑你是否还在努力解决这个问题。。。但我还是找到了答案
如果查看jsrt.h,您将看到所有本机函数在使用字符串参数时都使用wchar\u t,但是DllImport属性没有指定字符集,因此它默认为ANSI
我在Native.cs文件中进行了查找/替换,并将所有DllImport属性更改为
[DllImport(“jscript.dll”,CharSet=CharSet.Unicode)]
。。。现在我的代码运行良好。我已经向GitHub上的示例所有者发送了一个请求,以修复此问题。更新当前位于my fork中的尝试将其添加到您的AssemblyInfo.cs
文件中:
[module: DefaultCharSet(CharSet.Unicode)]
尝试将其添加到您的AssemblyInfo.cs
文件:
[module: DefaultCharSet(CharSet.Unicode)]
我尝试通过替换C#sample的主要方法来编译它,结果在我的机器上运行良好。我会尝试下面贾斯汀的代码,看看你是否可以获得更多关于错误的详细信息,以找出问题所在。你是否尝试将其作为STA线程运行?我不确定这是否有必要。我尝试通过替换C#sample的主要方法来编译它,结果在我的机器上运行良好。我会尝试下面贾斯汀的代码,看看你是否可以获得更多关于错误的详细信息,以找出问题所在。你是否尝试将其作为STA线程运行?我不确定这是否必要。