【问题标题】:Running a JavaScript file in C#? [duplicate]在 C# 中运行 JavaScript 文件? [复制]
【发布时间】:2014-12-15 17:44:41
【问题描述】:

我有一个来自网络服务器的 JavaScript 文件,网络浏览器将运行该文件并生成一些值(例如:有一个哈希函数,一个字符串被发送到返回哈希值的函数)。

我想在 C# 中使用 javascript 文件为我的应用程序执行此操作。我对 Javascript 或其工作原理一无所知,但可以在 C# 中做到这一点吗?

【问题讨论】:

  • 试试:jint.codeplex.com。以下是如何调用函数的示例:github.com/pwasiewicz/neusim/blob/master/NeuSim.Eval/…(CallFunction 方法)
  • 为什么不在 C# 中重写所需的函数?
  • 如果 JavaScript 使用特定于浏览器的函数或库(例如 jQuery),我认为你不走运。
  • 也许重写函数是一种选择,但是我想使用的函数使用 CryptoJS,我找不到如何复制它。
  • @imdabestmanideedeet 如果网络服务器脚本会改变怎么办?不是说这是 OP 服务器。那么,OP 是否必须创建新版本来更新功能?

标签: javascript c# interpreter


【解决方案1】:

是的,您可以这样做,Stack Overflow 中有一些帖子展示了如何在 C# 中执行 JavaScript 代码。

但由于编程语言之间的浮点差异,您将面临在 C#(编写的代码或嵌入 javascript 的解释器)中获得相同输出的巨大问题。

我给你的建议:

如果您的 javscript 代码具有复杂的数学计算,使用完全相同的代码(C# vs javscriptengine v8 - 浏览器)您将得到不同的值作为结果。

修复可以使用浮点预测/模式来实现,但你会有大量的工作,我以一种幸运的方式修复了这个问题(服务器速度快,没​​有人注意到服务器通信)在服务器上执行数学运算,js 处理变量为字符串“”。

示例: 基于javascript数字类型相似但不相等!!!使用 C# 双重

javacript 数学:

var x = 0.1 + 0.2;

结果 => 0.30000000000000004

C# 数学:

double x = 0.1 + 0.2; 

结果 => 0.3

在浪费大量时间(就像我做的那样)之前要三思而后行。

【讨论】:

  • 这不只是 hpw 的问题吗?输出时会格式化数字吗?
  • 是和否,是的,如果您使用的价格,您知道没有人会支付总计 19.3000000000000000000001$ 在这里您可以使用第三位数的舍入机制。不,因为你永远不会在复杂的操作中得到相同的输出,比如说所有 math.sin 的平均值(从 0.000001 到 2.00000,周期为 0.000001)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-29
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多