架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12730|回复: 1

[资料] 使用 jsc 将 javascript 生成 dll 供 c# 调用

[复制链接]
发表于 2020-12-2 12:47:18 | 显示全部楼层 |阅读模式
需求:我们模拟 http 请求的时候,请求参数、请求内容可能会涉及一些算法内容,算法可以从 javascript 中找到,如果将 js 算法翻译成我们使用的编程语言(例如:Java、c#),难度较大,通常 js 内容都经过压缩和混淆,所以,如果将 js 直接翻译成类库,供我们调用就非常棒了。

利用Jurassic在.net下执行js函数
https://www.itsvse.com/thread-4303-1-1.html
使用 jsc 将 javascript 生成 exe 程序

test1.js 代码如下:

打开 vs 2019 开发者命令,输入如下:

尝试运行 main.exe 程序,我们通过 cmd 命令来运行程序,直接双击,程序会一闪而过,如下:

exe.jpg

使用 jsc 将 javascript 生成 dll 类库

test.js 代码如下:

命令如下:

新建一个 .NET 4 的控制台项目,引用 common.dll 类库

然后实例化对象,调用其方法即可。代码如下:


如下图:

dll.jpg

可以通过 ILSpy 工具,查看生成的 dll 源码,如下图:

source.jpg

jsc 程序文件路径:C:\Windows\Microsoft.NET\Framework\v4.0.30319\jsc.exe

参数:

Microsoft (R) JScript Compiler version 14.00.3752
for Microsoft (R) .NET Framework version 4.0.30319
版权所有(C) Microsoft Corporation。保留所有权利。

jsc [选项] <源文件> [[选项] <源文件>...]

                         JScript 编译器选项

                           - 输出文件 -
  /out:<file>              指定二进制输出文件的名称
  /t[arget]:exe            创建控制台应用程序(默认)
  /t[arget]:winexe         创建 Windows 应用程序
  /t[arget]:library        创建库程序集
  /platform:<platform>     限制可以运行此代码的平台;必须是 x86、Itanium、x64 或 Any CPU(默认平台)

                           - 输入文件 -
  /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”的成员指定默认值
(完)




上一篇:ASP.NET Core(三)使用 ActivatorUtilities 动态创建实例
下一篇:Python 使用 http.server 开启一个 http 服务
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-8-16 16:58:13 | 显示全部楼层
学习学习
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-19 19:33

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表