在c#中运行js脚本(将js文件生成为.dll文件)
2016-09-20 17:51
567 查看
原文链接:http://www.cnblogs.com/xhan/archive/2010/10/22/1857992.html
前言:
本来在搞一个Google翻译的接口--向Google翻译发送请求--返回翻译数据...
结果发现发送请求中的一个参数(tk)是需要验证的,验证不通过,报403错误...
网上搜到一个可以自己生成tk值的方法,不过是js写的...省事的想将js代码直接拿来用...
就看到了博客中的一个例子...
0--
打开vs命令行 运行 "jsc /t:library C:\[b]common.js"[/b]
生成报错···JS1234:在库的内部只允许类型和包定义
1--在最外面一层添加class..
打开vs命令行 运行 "jsc /t:library C:\[b]common.js"[/b]
成功生成...???
3--尴尬-生成到哪里了···
最后研究下jsc的一些文档吧···找到一份说明:http://www.planabc.net/2011/06/04/use_jscript_to_create_windows_apps_and_libraries/
打开vs命令行 运行 "jsc /t:library /out:d:\common.dll C:\common.js"
生成生成!!!
3.在c#项目中引用common.dll 和Micosoft.JScript.dll
4.
xx x = new xx();
xx....
over。。。
???
果然还是报错...
仔细又看了一遍:http://www.planabc.net/2011/06/04/use_jscript_to_create_windows_apps_and_libraries/
这次外边又加了一个"package"...
终于可以了···GG
前言:
本来在搞一个Google翻译的接口--向Google翻译发送请求--返回翻译数据...
结果发现发送请求中的一个参数(tk)是需要验证的,验证不通过,报403错误...
网上搜到一个可以自己生成tk值的方法,不过是js写的...省事的想将js代码直接拿来用...
就看到了博客中的一个例子...
0--
function b(a, b) { for (var d = 0; d < b.length - 2; d += 3) { var c = b.charAt(d + 2), c = "a" <= c ? c.charCodeAt(0) - 87 : Number(c), c = "+" == b.charAt(d + 1) ? a >>> c : a << c; a = "+" == b.charAt(d) ? a + c & 4294967295 : a ^ c } return a } function tk(a,TKK) { for (var e = TKK.split("."), h = Number(e[0]) || 0, g = [], d = 0, f = 0; f < a.length; f++) { var c = a.charCodeAt(f); 128 > c ? g[d++] = c : (2048 > c ? g[d++] = c >> 6 | 192 : (55296 == (c & 64512) && f + 1 < a.length && 56320 == (a.charCodeAt(f + 1) & 64512) ? (c = 65536 + ((c & 1023) << 10) + (a.charCodeAt(++f) & 1023), g[d++] = c >> 18 | 240, g[d++] = c >> 12 & 63 | 128) : g[d++] = c >> 12 | 224, g[d++] = c >> 6 & 63 | 128), g[d++] = c & 63 | 128) } a = h; for (d = 0; d < g.length; d++) a += g[d], a = b(a, "+-a^+6"); a = b(a, "+-3^+b+-f"); a ^= Number(e[1]) || 0; 0 > a && (a = (a & 2147483647) + 2147483648); a %= 1E6; return a.toString() + "." + (a ^ h) }
打开vs命令行 运行 "jsc /t:library C:\[b]common.js"[/b]
生成报错···JS1234:在库的内部只允许类型和包定义
更正此错误
确保该代码只包含类、接口和包。1--在最外面一层添加class..
class jsCommon{
function b(a, b) { for (var d = 0; d < b.length - 2; d += 3) { var c = b.charAt(d + 2), c = "a" <= c ? c.charCodeAt(0) - 87 : Number(c), c = "+" == b.charAt(d + 1) ? a >>> c : a << c; a = "+" == b.charAt(d) ? a + c & 4294967295 : a ^ c } return a } function tk(a,TKK) { for (var e = TKK.split("."), h = Number(e[0]) || 0, g = [], d = 0, f = 0; f < a.length; f++) { var c = a.charCodeAt(f); 128 > c ? g[d++] = c : (2048 > c ? g[d++] = c >> 6 | 192 : (55296 == (c & 64512) && f + 1 < a.length && 56320 == (a.charCodeAt(f + 1) & 64512) ? (c = 65536 + ((c & 1023) << 10) + (a.charCodeAt(++f) & 1023), g[d++] = c >> 18 | 240, g[d++] = c >> 12 & 63 | 128) : g[d++] = c >> 12 | 224, g[d++] = c >> 6 & 63 | 128), g[d++] = c & 63 | 128) } a = h; for (d = 0; d < g.length; d++) a += g[d], a = b(a, "+-a^+6"); a = b(a, "+-3^+b+-f"); a ^= Number(e[1]) || 0; 0 > a && (a = (a & 2147483647) + 2147483648); a %= 1E6; return a.toString() + "." + (a ^ h) }
}
打开vs命令行 运行 "jsc /t:library C:\[b]common.js"[/b]
成功生成...???
3--尴尬-生成到哪里了···
最后研究下jsc的一些文档吧···找到一份说明:http://www.planabc.net/2011/06/04/use_jscript_to_create_windows_apps_and_libraries/
jsc [选项] <源文件> [[选项] <源文件>…] JScript 编译器选项 – 输出文件 – /out:<file> 指定二进制输出文件的名称 /t[arget]:exe 创建控制台应用程序(默认) /t[arget]:winexe 创建 Windows 应用程序 /t[arget]:library 创建库程序集 /platform:<platform> 限制此代码可以在其上运行的平台;必须是 x86、Itanium、x64 或 anycpu。默认为 anycpu – 输入文件 – /autoref[+|-] 基于导入的命名空间和完全限定名称自动引用程序集(默认情 况下为 on) /lib:<path> 指定要在其中搜索引用的附加目录 /r[eference]:<file list> 从指定的程序集文件引用元数据 <file list>: <assembly name>[;<assembly name>…] – 资源 – /win32res:<file> 指定 Win32 资源文件(.res) /res[ource]:<info> 嵌入指定的资源 <info>: <filename>[,<name>[,public|private]] /linkres[ource]:<info> 将指定的资源链接到此程序集 <info>: <filename>[,<name>[,public|private]] – 代码生成 – /debug[+|-] 发出调试信息 /fast[+|-] 禁用语言功能以使代码更好地生成 /warnaserror[+|-] 将警告视为错误 /w[arn]:<level> 设置警告等级(0-4) – 杂项 – @<filename> 有关更多选项,请阅读响应文件 /? 显示帮助 /help 显示帮助 /d[efine]:<symbols> 定义条件编译符号 /nologo 不显示编译器版权标志 /print[+|-] 提供 print() 函数 – 高级 – /codepage:<id> 使用指定的代码页 ID 打开源文件 /lcid:<id> 将指定的 LCID 用于消息和默认代码页 /nostdlib[+|-] 不导入标准库(mscorlib.dll)并将 autoref 默认值更改为 off /utf8output[+|-] 以 UTF-8 字符编码形式发出编译器输出 /versionsafe[+|-] 为没有标记为“override”或“hide”的成员指定默认值
打开vs命令行 运行 "jsc /t:library /out:d:\common.dll C:\common.js"
生成生成!!!
3.在c#项目中引用common.dll 和Micosoft.JScript.dll
4.
xx x = new xx();
xx....
over。。。
???
果然还是报错...
仔细又看了一遍:http://www.planabc.net/2011/06/04/use_jscript_to_create_windows_apps_and_libraries/
package LibHW {
class jsCommon{
function b(a, b) { for (var d = 0; d < b.length - 2; d += 3) { var c = b.charAt(d + 2), c = "a" <= c ? c.charCodeAt(0) - 87 : Number(c), c = "+" == b.charAt(d + 1) ? a >>> c : a << c; a = "+" == b.charAt(d) ? a + c & 4294967295 : a ^ c } return a } function tk(a,TKK) { for (var e = TKK.split("."), h = Number(e[0]) || 0, g = [], d = 0, f = 0; f < a.length; f++) { var c = a.charCodeAt(f); 128 > c ? g[d++] = c : (2048 > c ? g[d++] = c >> 6 | 192 : (55296 == (c & 64512) && f + 1 < a.length && 56320 == (a.charCodeAt(f + 1) & 64512) ? (c = 65536 + ((c & 1023) << 10) + (a.charCodeAt(++f) & 1023), g[d++] = c >> 18 | 240, g[d++] = c >> 12 & 63 | 128) : g[d++] = c >> 12 | 224, g[d++] = c >> 6 & 63 | 128), g[d++] = c & 63 | 128) } a = h; for (d = 0; d < g.length; d++) a += g[d], a = b(a, "+-a^+6"); a = b(a, "+-3^+b+-f"); a ^= Number(e[1]) || 0; 0 > a && (a = (a & 2147483647) + 2147483648); a %= 1E6; return a.toString() + "." + (a ^ h) }
}
}
这次外边又加了一个"package"...
终于可以了···GG
相关文章推荐
- Qt Creator生成的.exe文件运行缺少.dll文件解决
- c#调用matlab m文件生成的.dll时出现JVM(java虚拟内存)不足
- Asp.net(C#)读取数据库生成JS文件制作首页图片切换效果
- C# winform应用程序运行后,bin文件夹中会自动生成3个文件和一个应用程序
- Asp.net(C#)读取数据库并生成JS文件制作首页图片切换效果(附demo源码下载)
- C#生成.DLL文件
- C# 生成js文件
- C#中怎样让引用的.dll文件也集成到生成的.exe文件中
- java 解决调用c语言实现简单HelloWorld函数生成.dll动态链接库的32位dll文件无法在64位机上运行
- Asp.net(C#)读取数据库并生成JS文件制作首页图片切换效果(附demo源码下载)
- .CS文件编译生成.DLL文件(C#网络搜集)
- .CS文件编译生成.DLL文件 .EXE文件(C#网络搜集)(转)
- c#自动附加分离备份还原数据库 C#生成安装文件后自动附加数据库的思路跟算法 打包之后,运行之前
- c#生成js文件
- 将(Oracle)数据库表导出到Excel,并生成文件(C#实现)
- C#生成单个文件
- 自动运行xelatex命令两遍及xdvipdfmx生成pdf并删除临时文件的工具
- 简单实现C#生成Excel 2007文件并下载
- C#生成安装文件后自动附加数据库的思路跟算法
- 后台调用JS文件 c#