Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio code 如何在扩展构建时确定vscode的当前和未来电子版本_Visual Studio Code_Electron_Vscode Extensions - Fatal编程技术网

Visual studio code 如何在扩展构建时确定vscode的当前和未来电子版本

Visual studio code 如何在扩展构建时确定vscode的当前和未来电子版本,visual-studio-code,electron,vscode-extensions,Visual Studio Code,Electron,Vscode Extensions,我正在合作开发一个vscode扩展,它使用一个本机模块(@serialport),每个平台/电子版本组合都需要包含/预编译该模块 如果我们只包括当前版本,当vscode更新electron版本时,它经常会中断。有些平台本来可以重新编译,而另一些平台只能在(非常)长时间地安装了相当复杂的工具链之后才能重新编译,IMO不应该要求最终用户使用这些工具链 因此我们希望包括相关的预构建, 为此,我们需要及时向前看…… 我正在寻找一种可靠的方法来确定vscode使用的电子版本 -当前版本 -以及未来(内幕)

我正在合作开发一个vscode扩展,它使用一个本机模块(@serialport),每个平台/电子版本组合都需要包含/预编译该模块

如果我们只包括当前版本,当vscode更新electron版本时,它经常会中断。有些平台本来可以重新编译,而另一些平台只能在(非常)长时间地安装了相当复杂的工具链之后才能重新编译,IMO不应该要求最终用户使用这些工具链

因此我们希望包括相关的预构建,
为此,我们需要及时向前看……

我正在寻找一种可靠的方法来确定vscode使用的电子版本
-当前版本 -以及未来(内幕)版本 -此外,最好包含以前的版本,以允许向后兼容

我发现它具有当前(或下一个即将出现的)版本

  • 今天是4.2.7
  • vscode当前版本使用4.2.5
  • 可以从版本历史记录中读取以前的版本

  • 但是未来/内部版本呢? 以编程方式确定的好方法/位置是什么?即哪个分支具有insiders版本
基于以下提示和一些进一步探索的可能答案:

  • 下一个版本位于master
    .microsoft/vscode/blob/.yarnrc
  • 版本1.36.1位于
    .microsoft/vscode/blob/1.36.1/.yarnrc
  • x.y.z版本位于
    .microsoft/vscode/blob/x.y.z/.yarnrc
这只会留下要查找的中间版本/标记

预期方法:
  • 在构建过程中,收集相关的电子版本,即“3.1.8”、“4.2.5”、“6.0.0-beta.0”
  • 使用节点ABI确定这些版本使用的ABI
    var getAbi=require('node-abi')。getAbi;getAbi(“$version”,“electron”)
  • 使用预构建安装下载相关的本机预构建绑定,并将其作为扩展的一部分包含
    \node\u modules\.bin\prebuild-install.cmd--运行时电子--目标$version--arch$arch--平台$platform--标记前缀@serialport/bindings@
  • 将所有ABI arch平台组合的绑定文件复制到一个文件夹中,并将其包含在vscode扩展包中
  • 在加载时,确定正在运行的vscode/electron实例的ABI版本,并从ABI/platform文件夹动态加载模块
备选/补充办法: -作为最后的努力,代码可以尝试为当前平台及时下载预构建绑定文件,但这可能会遇到权限/恶意软件扫描问题,因为这实际上是从外部github复制下载可执行代码

下载绑定的当前脚本代码:

好的,那么反向逻辑表示:

  • 下一个版本在master
    https://raw.githubusercontent.com/microsoft/vscode/master/.yarnrc
  • 版本1.36.1在
    https://raw.githubusercontent.com/microsoft/vscode/1.36.1/.yarnrc
  • 版本x.y.z在
    https://raw.githubusercontent.com/microsoft/vscode/x.y.z/.yarnrc

它只留下中间版本/标记待查找。

好的,因此反向逻辑表示:

  • 下一个版本在master
    https://raw.githubusercontent.com/microsoft/vscode/master/.yarnrc
  • 版本1.36.1在
    https://raw.githubusercontent.com/microsoft/vscode/1.36.1/.yarnrc
  • 版本x.y.z在
    https://raw.githubusercontent.com/microsoft/vscode/x.y.z/.yarnrc

这只剩下中间版本/标签有待发现。

“但是未来/内部版本呢”-我不这么认为,最新的主分支应该与内部版本同步?让我将问题的这一部分重新表述为:'哪个分支是内部版本?'内部版本是由主版本生成的。好的,因此,反向逻辑随后指示:-下一个版本在master
中。microsoft/vscode/blob/.yarnrc
-版本1.36.1在
中。microsoft/vscode/blob/1.36.1/.yarnrc
-版本x.y.z在
中。microsoft/vscode/blob/x.y.z/.yarnrc
只留下中间标记待查找。“但未来/内部版本如何“-我不明白,最新的主分支应该与Insider的构建同步?让我将问题的这一部分重新表述为:'哪个分支是insiders版本?'insiders是由master构建的。好的,因此,反向逻辑随后指示:-下一个版本在master
中。microsoft/vscode/blob/.yarnrc
-版本1.36.1在
中。microsoft/vscode/blob/1.36.1/.yarnrc
-版本x.y.z在
中。microsoft/vscode/blob/x.y.z/.yarnrc
只留下中间标记待查找。