Edge.js
GitHub
NPM package
环境要求
1.支持Node.Js 14.x, 16.x, 18.x, 19.x
2.支持 .NET Core 1.0.1 - 6.x - Windows/Linux/macOS
nodejs中调用C# dll
下载并安装 .NET 6.0 SDK
npm install edge-js
C#中的代码:
注意事项:文章来源:https://www.toymoban.com/news/detail-458004.html
- 方法必须用async异步修饰,且返回值必须为Task < object >
- 不能用静态方法,且方法需要为public
using HDEC.CS.Geometry;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace HDEC.CS //命名空间
{
public class CSGeometryReader //类名
{
//方法名
public async Task<object> GetCSMesh(string byteArrayJson)
{
try
{
var geo = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]>(byteArrayJson);
var mesh = CSGeometry.Deserialize(geo, typeof(CSMesh));
return Newtonsoft.Json.JsonConvert.SerializeObject(mesh);
}
catch(Exception e)
{
return e.Message + e.StackTrace;
}
}
}
}
nodejs中的代码:
C#源码编译成dll后就可以在nodejs中使用
DLL文件的路径注意事项:文章来源地址https://www.toymoban.com/news/detail-458004.html
- 如果用相对路径,dll必须和js文件放在一个目录下
- 用绝对路径,dll和js文件可以不在一个目录下
process.env.EDGE_USE_CORECLR = 1 //这行不加会报错
const sqlite3 = require("sqlite3")
const edge = require('edge-js')
main()
async function main () {
const dbPath = './new-ss.db'
const csDb = new sqlite3.Database(dbPath);
const queryElements = "SELECT Id, Geometry FROM CDElement WHERE IsDeleted = 0"
const dbElements = await queryDbElements(csDb, queryElements)
console.log(dbElements)
}
async function queryDbElements (db, sql) {
return new Promise((resolve) => {
const readGeom = edge.func({
assemblyFile: 'CSGeometryReader.dll', // DLL文件的路径
typeName: 'HDEC.CS.CSGeometryReader', // 命名空间.类名
methodName: 'GetCSMesh' // 方法名
});
const result = []
db.all(sql, [], (_err, rows) => {
if (rows == undefined) {
resolve(undefined)
} else {
for (const row of rows) {
const arrByte = Array.from(row.Geometry)
const input = JSON.stringify(arrByte)
readGeom(input, (error, res) => {
const geom = JSON.parse(res.toString())
const id = row.Id
if (error) {
throw error
}
result.push({ id, geom })
});
}
resolve(result)
}
})
})
}
到了这里,关于如何在nodejs中调用C# dll的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!