在Windows下原生安装vs code server并配置C++开发环境

兹有工作站一台,配置比较高,但经常不在办公室。ToDesk一类的再好它也是基于图像传输的机制,激烈操控时还是不够丝滑,写代码不是很爽。因此,希望使用vs code server,利用远程硬件进行基于网页的开发,充分利用工作站算力。

如果装的是Linux,那么基本就是若干命令的事儿。但微软在这事儿上居然罕见地搞起了Linux优先,windows成了二等公民,坑就多了些。

整体上基于此处教程进行。注意目前(2023年6月28日),代码是基于node js 16的,实测最新的node是编译不过去的,不要浪。

2023年11月27日补充:新版要求node 18了,不是很能理解既然升级为啥不升级到最新。Windows下的升级方法是直接覆盖安装。

注意下载的时候选择node js 16下最新的小版本。写文章时最新的小版本是Node.js 16.20.1 Gallium 2023-06-20,旧的老版本可能无法检测到VS 2022.

其他安装条件如这个链接所示。

因为过程中需要编译,最好首先装好整套的Visual Studio 2022(社区版没问题)并且一定要装C++开发功能。否则就安装的时候装chocolate,让他自己装一些包。

在手动装Visual Studio 2022,不用chocolate(安装过程中不选“Tools for Native Modules”)的情况下。如果后续步骤中有报错找不到VS一类的问题,可以在安装完node之后执行npm config set msvs_version {visual studio version},例如npm config set msvs_version 2022.

然后安装git for windows,不要误会,主要不是要那个git,而是要那个bash环境。其他Windows上的bash环境如msys2我没有测过。

总的来说,需要提前安装的有:

  • python
  • Visual Studio 2022
  • git for windows
  • node.js 16

文档也写的比较杂乱,建议通读之后再动手。

由于安装过程中会调用visual Studio,安装末尾过程中会调用sh命令,所以这是个大坑,需要一个命令行环境同时可以访问vc工具链和sh命令。

这个需求,理论上可以通过把git的bin目录加入(或者set PATH=%PATH%;C:\Program Files\Git\usr\bin;临时加入)path来实现。但我测试这个方法貌似会有未知问题,造成不报错但编译出来的文件调用终端时极不稳定。

所以微软这是搞啥呢。

所以最后我找到的解决办法匪夷所思:在git for windows自带的bash里面操作。网络不好的话自己解决。

  1. 安装上面说的所有软件,确认npm命令全局可用。
  2. 可能需要执行npm config set msvs_version 2022 --global,因为我执行过很多次所以不清楚有没有缓存。(2023年11月27日附加:在最新安装的node 18中,这个命令显示没有名为msvs_version的配置项,至于是变智能还是其他毛病不得而知,最后安装成功,我也就没有深究)。
  3. 可以安装了,npm install --global code-server --unsafe-perm
  4. 如果没有报错,试试运行一个code-server,如果不报错并且能够通过浏览器访问,就OK了。

5008端口,做FRP穿透,再反向代理一层。certbot附加个证书,避免明文传输密码。

反向代理的问题是这玩意儿用了web socket,所以反向代理有几个特殊的地方:

server{
  listen 443 ssl;
  server_name  codeserver.tiger2doudou.com;

  ssl_certificate /etc/letsencrypt/live/codeserver.tiger2doudou.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/codeserver.tiger2doudou.com/privkey.pem;

  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
  add_header X-Cache-Status $upstream_cache_status;

  access_log /var/log/codeserver/access.log;
  error_log /var/log/codeserver/error.log;

  # set max upload size
  client_max_body_size 512M;


  set $upstream_vscode  http://127.0.0.1:12345;

  location / {
    # use a veriable $upstream_vscode, so nginx will not try to check upstream status at startup
    proxy_pass  $upstream_vscode;

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection upgrade;
    proxy_set_header Accept-Encoding gzip;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

server {
  if ($host = codeserver.tiger2doudou.com) {
    return 301 https://$host$request_uri;
  }

  listen 80;
    server_name codeserver.tiger2doudou.com;
  return 404; # managed by Certbot
}

但还是不放心。这玩意儿用起来这儿方便,权限和功能又太多。所以最好还是平时不要开,需要时用todesk打开,用完关掉。

安装插件最好在set HTTP_PROXY 你懂的环境下运行,code-server是很尊重这个变量还有HTTPS_PROXY的意见的。但这个环境可能对一些环境变量有干扰。因此,装好之后就关闭code-server再开一个正常环境进行配置等。

由于开源的纯洁性问题,一些微软的插件在code-server的应用商店里面是没有的,需要去微软商店手动下载visx文件(通过 version history页面),使用插件页面的安装visx功能进行安装。

下载时注意86/64版本问题。

有类似问题的插件还包括[Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance),也是要手动下载安装。基本上就是微软下俩功夫而不想开源的都是这样。
  • 最后更改: 2023/11/27 15:03