在VS代码远程开发的上下文中,我可以看到可以在devcontainers.json
文件中指定要安装的扩展名,如VSCODE-DEV-CONTAINERS REPO中的示例中所示,如这个示例:
"extensions": [
"dbaeumer.vscode-eslint"
]
我在本地有一个基于VSIX文件的扩展名,我也想在此处指定,以便将其安装到容器中。但是我不确定如何最好地在这里声明它。
我在容器构建步骤的输出中查看,并注意到本地项目目录已安装到容器中(添加了可读性的线路断点(:
Run: docker run -a STDOUT -a STDERR -p 127.0.0.1:4004:4004
-v /Users/dj/local/projects/test1:/workspaces/test1
-v /Users/dj/.gitconfig:/root/.gitconfig
-l vsch.quality=insider
-l vsch.local.folder=/Users/dj/local/projects/test1
-l vsch.remote.devPort=9753
vsc-test1-304320e2e9560b5557f6f7871801047f
/bin/sh -c echo Container started ; while sleep 1; do :; done
因此,我将VSIX文件放在项目的根(/Users/dj/local/projects/test1/vscode-cds-1.1.4.vsix
(的根部,然后在容器中可用。因此,将完全限定的路径添加到容器中的该文件到extensions
属性:
"extensions": [
"dbaeumer.vscode-eslint",
"/workspaces/test1/vscode-cds-1.1.4.vsix"
]
确实确实导致该扩展名成功地安装到容器中:
Installing extensions...
Installing extension 'dbaeumer.vscode-eslint' v1.8.2...
Extension 'dbaeumer.vscode-eslint' v1.8.2 was successfully installed.
Extension 'vscode-cds-1.1.4.vsix' was successfully installed. <----
太好了!
但是,这个黑客要求我用硬编码.devcontainer/
目录为(即test1/
(的目录的名称,我当然要避免使用哪个。
是否可以在devcontainer.json
文件中使用硬编码整个项目目录名称进行硬编码?
谢谢。
在问这个问题后约10分钟,我想到了一种不同的方法,这可能仍然是一个黑客,但是它避免了必须使用项目目录名称。我将VSIX文件放在.devcontainer/
目录中,然后将复制命令添加到我的Dockerfile
的末尾:
COPY vscode-cds-1.1.4.vsix /tmp/
然后可以在extensions
属性中指定此中性路径:
"extensions": [
"dbaeumer.vscode-eslint",
"/tmp/vscode-cds-1.1.4.vsix"
]
这有效。想知道是否有更好的方法。
devcontainer.json可以访问以下变量:
https://containers.dev/implementors/json_reference/#variables-in-devcontainerjson
所以在您的示例中是:
"extensions": [
"dbaeumer.vscode-eslint",
"${containerWorkspaceFolder}/vscode-cds-1.1.4.vsix"
]
在此pr