我想开发一个VS代码扩展,它使用第三方应用程序的COM类型库(互操作)?
理想情况下,我想用Fable编写扩展名F#(Fsharp)将其编译为JS,但这并非完全必要。在任何情况下,我都可以引用和使用F#,C#和VB.NET中的COM库,并在需要时提供.NET库作为包装。
背景信息:我是VS Code扩展开发的新手。我设法用JavaScript和F#+ Fable编译一个hello world扩展。我可能不太了解的是如何使用package.json文件和npm包管理器来引用库。
编辑:我尝试了node.js库winax,但没有成功。还有其他选择吗?
答案 0 :(得分:1)
一位同事设法让Winax(Node.js插件)在VS Code扩展中工作。对于当前版本VS Code中使用的相同版本的Node.js和Electron重新编译winax非常重要。 (在撰写本文时,VS Code 1.16.0使用Node.js 7.4.0和Electron 1.7.3。)
在命令行中(在扩展项目文件夹中)执行
npm install --save winax
cd node_modules\winax
node-gyp configure
node-gyp build
cd ..\..
npm rebuild winax --runtime=electron --target=1.7.3 --disturl=https://atom.io/download/atom-shell --build-from-source
电子版可能需要在--target=1.7.3
更新。
现在在VS Code扩展中使用Winax,例如
var winax = require('winax');
var excel = new winax.Object("Excel.Application");
excel.visible = true;
对我来说就像魅力一样=)
答案 1 :(得分:0)
方法相对简单。你必须写一个native node module。此模块是一个C ++ DLL,您可以使用它来导入要使用的COM库的类型库。它还可以提供一个访问层,用于将调用从V8转换为该COM库。