Node API for .NET: JavaScript + .NET 互操作
该项目实现了在同一进程中.NET和JavaScript之间的高级互操作。
- 从JavaScript应用程序中加载.NET程序集并调用.NET API。
- 从.NET应用程序中加载JavaScript包并调用JS API。
互操作具有高性能,支持TypeScript类型定义生成、异步(任务/Promise)、流等功能。它使用Node API,因此兼容任何Node.js版本(无需重新编译)或支持Node API的其他JavaScript运行时。
:warning: 状态:公开预览版 - 大部分功能运行良好,但在边缘情况下仍存在一些已知限制,API可能还会有小幅度的breaking变更。
文档
入门指南、功能详情和API参考文档发布在 https://microsoft.github.io/node-api-dotnet
最简示例 - JS调用.NET
// JavaScript
const Console = require('node-api-dotnet').System.Console;
Console.WriteLine('Hello from .NET!'); // JS通过.NET控制台API输出
最简示例 - .NET调用JS
// C#
interface IConsole { void Log(string message); }
var nodejs = new NodejsPlatform(libnodePath).CreateEnvironment();
nodejs.Run(() =>
{
var console = nodejs.Import<IConsole>("global", "console");
console.Log("Hello from JS!"); // C#通过JS控制台API输出
});
包
根据不同的场景, 可以使用NPM或NuGet包:
- NPM:
node-api-dotnet
- NuGet:
Microsoft.JavaScript.NodeApi
详情请参阅包和发布。
开发
有关构建、测试和调试本项目的信息,请参阅 README-DEV.md。
贡献需要同意 贡献者许可协议。
行为准则
本项目采用了 Microsoft开源行为准则。 更多信息请参阅 行为准则常见问题或 联系opencode@microsoft.com获取任何其他问题或 意见。
商标
本项目可能包含项目、产品或服务的商标或标识。Microsoft商标或标识的授权使用必须遵循 Microsoft商标和品牌指南。 在本项目的修改版本中使用Microsoft商标或标识不得造成混淆或暗示Microsoft赞助。任何第三方商标或标识的使用都受制于这些 第三方的政策。