08、electron调用C#类库的dll

一、搭建electron-vue框架

前面有详细的介绍,这里就不再赘述了。Electron+Vue开发轻量级应用

二、准备一个dll文件,若有则可以跳过这一步

  1. vs新建一个类库项目,并将属性中的输出类型改为类库
    image.png
  2. 在项目中新建一个类,命名为Startup,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Some
{
    public class Startup
    {
        public async Task Invoke(object input)
        {
            return Helper.SayHi("Invoke1:" + (string)input);
        }
 
        public async Task Invoke2(object input)
        {
            return Helper.SayHi("Invoke2:" + (string)input);
        }
 
        static class Helper
        {
            public static string SayHi(string param)
            {
                return ".NET Welcomes " + param;
            }
        }
    }
}

  1. 项目右键生成,并将对应的dll拷贝到项目的static文件夹下

三、安装加载C#类库需要的工具包

# yarn add edge
cnpm install edge

四、在页面中调用dll中定义的方法

const edge = require('edge');
var invoke1=edge.func({
    assemblyFile:path.join(__static, "Some.dll"),
    typeName:"Some.Startup",
    methodName: "Invoke"
})
invoke1("Call .net method from DLL",function(err,result)
{
    if (err) throw err;   
    console.log(result);
}); 

其中,assemblyFile是dll文件的路径;typeName是namespace.class命名空间.类名;methodName是方法名称;

跟调用c++的类库相比,简直不要太简单了。

参考文档

1. node.js通过edge访问.net动态链接库

你可能感兴趣的:(08、electron调用C#类库的dll)