有没有办法强制同步 Visual Studio 代码扩展在单独的机器 运行 不同的 OS 上?
Is there a way to force sync Visual Studio Code extensions on a seperate machine running a different OS?
配置偏差
当我使用两个系统时,我希望它们都与同一组扩展同步。
在我的例子中,我使用的主要系统正在工作,一旦我在家里加载我的编辑器,我希望任何卸载或添加的扩展最终都能同步。
这不会发生。
我的设置
- 我在工作中使用 macOS,在家中 Windows。
- 我安装了相同的 Visual Studio 代码(非内部人员)。
- 我已经配置了启用设置同步和登录。
- 我已将键绑定配置为每个平台唯一。
- 我的 settings.json 似乎同步了,但不是安装的扩展。
手动修复
我想强制同步扩展以使其对齐,但在设置同步中似乎没有办法做到这一点 UI。
我的临时解决方案是禁用所有扩展,然后使用 PowerShell 解析备份的 json 以转换为 code install-extension
命令。这并没有解决它,因为它仍在漂移。
我的理解是键绑定在每个平台上都是唯一的,但扩展应该是唯一的。
长期解决问题
有什么我应该检查的,以防止扩展与内置 Visual Studio 代码设置同步同步。
Note: I'm not using the Shan.code-settings-sync
extension at this time, having migrated over in the last year to the built in sync solution. If I don't figure this out I might consider changing back over.
如果我可以通过日志解决实际导致此类漂移的原因,我将根据我的进度更新它 post。
手动修复
要手动恢复,该选项不包含在上下文菜单中,而是包含在悬停时出现的图标。
在此处使用还原图标。
更新:据我所知,这解决了我的问题。
我刚刚在 Windows 上打开了 VSCode,几个小时前我在 macOS 上安装的扩展现在可以正确显示了。
我也发现内置的 Vscode 设置同步功能在同步扩展时有错误。如果在两台不同的机器上安装了两个干净的 vscode,我的 none 扩展已同步。
似乎不存在的扩展(也许开发者删除了他们的扩展)会导致 所有 扩展无意中成为文件中的 'blacklisted' lastSyncextensions.json
在键 "skippedExtensions":[]
下。您可以通过命令 Settings Sync : Open Local Backups Folder
访问此文件。对我来说,我所有的扩展都被列为要跳过,因此没有扩展在 vscode.
的新安装上同步
同步时出现暂时性互联网错误,例如在日志 [settingssync] [error] Download: XHR failed
中也会导致扩展在上述 lastSyncextensions.json
中的 "skippedExtensions"
中被列入黑名单。这有时也会导致 vscode 广播无法下载的扩展被其他机器删除 运行 vscode(使用相同的 Github 帐户同步)。
查看 vscode Settings Sync : Show Log
并查找跳过的扩展列表。
一旦某些东西被列入黑名单 - 问题是如何解决这个问题。
解决方案 1 - 从被不存在的扩展阻止的所有扩展中恢复
第 1 步:
识别不再存在的扩展(在 vscode 扩展 UI 中搜索它们,如果它们没有出现,那么它们就是罪魁祸首)。对我来说,它们恰好是 "skippedExtensions"
列表中的前几个条目。然后将它们添加到 settings.json
的 "settingsSync.ignoredExtensions"
。对于我的情况,我添加了条目:
"settingsSync.ignoredExtensions": [
"patrys.vscode-code-outline",
"gayanhewa.referenceshelper",
"ms-vscode-remote.remote-ssh-explorer"
],
第 2 步(残酷的重新同步):
现在我们需要重新同步。通过您机器上的 Settings Sync:Show Synced Data
/ "Synced Machines"
r.click 和 select "Turn off Settings Sync"
关闭设置同步。这似乎比简单地退出设置同步更有效。
现在单击正常的 vscode 齿轮图标(左下方)并登录到设置同步。这提示我像全新安装,是否合并,覆盖本地等。这次所有的扩展都OK了。
解决方案 2 - 从暂时性互联网错误导致的黑名单扩展程序中恢复
假设您在同步日志 (Settings Sync : Show Log
) 中看到一些 skipped 扩展:
[2021-12-30 14:05:57.690] [settingssync] [info] Extensions: Updated last synchronized extensions. Skipped: ["sapos.yeoman-ui","tht13.html-preview-vscode","patbenatar.advanced-new-file","alexisvt.flutter-snippets","vscjava.vscode-java-pack","vscjava.vscode-java-dependency","vscjava.vscode-java-test","vscjava.vscode-maven","vscjava.vscode-java-debug","janisdd.vscode-edit-csv","mohd-akram.vscode-html-format","zjhmale.vscode-ag"].
这会导致您机器上的文件 lastSyncextensions.json
中密钥 "skippedExtensions"
下的这些扩展似乎被永久列入黑名单。你如何解决这个问题?
You can get to lastSyncextensions.json
via the command Settings Sync : Open Local Backups Folder
and then open the file in vscode itself.
为了正确安装这些扩展,我编辑了 lastSyncextensions.json
并清除了列表 - 它现在显示为 "skippedExtensions":[]
。
然后我使用 vscode UI 转到之前跳过的每个特定扩展,并安装它。这也应该在可能受到影响的任何其他 vscode 机器上重新安装它。
Possibly, a simpler solution 2 (which I haven't tried) is don't bother with editing the file lastSyncextensions.json
- simply do the brutal re-sync described in step 2 of my solution 1 above. Thus hopefully the lastSyncextensions.json
gets regenerated (as well as the problematic "skippedExtensions":
entry) and this time pray your internet connection is good and there are no download errors this time.
我只需要关闭和打开设置同步就可以了。
配置偏差
当我使用两个系统时,我希望它们都与同一组扩展同步。 在我的例子中,我使用的主要系统正在工作,一旦我在家里加载我的编辑器,我希望任何卸载或添加的扩展最终都能同步。
这不会发生。
我的设置
- 我在工作中使用 macOS,在家中 Windows。
- 我安装了相同的 Visual Studio 代码(非内部人员)。
- 我已经配置了启用设置同步和登录。
- 我已将键绑定配置为每个平台唯一。
- 我的 settings.json 似乎同步了,但不是安装的扩展。
手动修复
我想强制同步扩展以使其对齐,但在设置同步中似乎没有办法做到这一点 UI。
我的临时解决方案是禁用所有扩展,然后使用 PowerShell 解析备份的 json 以转换为 code install-extension
命令。这并没有解决它,因为它仍在漂移。
我的理解是键绑定在每个平台上都是唯一的,但扩展应该是唯一的。
长期解决问题
有什么我应该检查的,以防止扩展与内置 Visual Studio 代码设置同步同步。
Note: I'm not using the
Shan.code-settings-sync
extension at this time, having migrated over in the last year to the built in sync solution. If I don't figure this out I might consider changing back over.
如果我可以通过日志解决实际导致此类漂移的原因,我将根据我的进度更新它 post。
手动修复
要手动恢复,该选项不包含在上下文菜单中,而是包含在悬停时出现的图标。
在此处使用还原图标。
更新:据我所知,这解决了我的问题。 我刚刚在 Windows 上打开了 VSCode,几个小时前我在 macOS 上安装的扩展现在可以正确显示了。
我也发现内置的 Vscode 设置同步功能在同步扩展时有错误。如果在两台不同的机器上安装了两个干净的 vscode,我的 none 扩展已同步。
似乎不存在的扩展(也许开发者删除了他们的扩展)会导致 所有 扩展无意中成为文件中的 'blacklisted'
的新安装上同步lastSyncextensions.json
在键"skippedExtensions":[]
下。您可以通过命令Settings Sync : Open Local Backups Folder
访问此文件。对我来说,我所有的扩展都被列为要跳过,因此没有扩展在 vscode.同步时出现暂时性互联网错误,例如在日志
[settingssync] [error] Download: XHR failed
中也会导致扩展在上述lastSyncextensions.json
中的"skippedExtensions"
中被列入黑名单。这有时也会导致 vscode 广播无法下载的扩展被其他机器删除 运行 vscode(使用相同的 Github 帐户同步)。
查看 vscode Settings Sync : Show Log
并查找跳过的扩展列表。
一旦某些东西被列入黑名单 - 问题是如何解决这个问题。
解决方案 1 - 从被不存在的扩展阻止的所有扩展中恢复
第 1 步:
识别不再存在的扩展(在 vscode 扩展 UI 中搜索它们,如果它们没有出现,那么它们就是罪魁祸首)。对我来说,它们恰好是 "skippedExtensions"
列表中的前几个条目。然后将它们添加到 settings.json
的 "settingsSync.ignoredExtensions"
。对于我的情况,我添加了条目:
"settingsSync.ignoredExtensions": [
"patrys.vscode-code-outline",
"gayanhewa.referenceshelper",
"ms-vscode-remote.remote-ssh-explorer"
],
第 2 步(残酷的重新同步):
现在我们需要重新同步。通过您机器上的 Settings Sync:Show Synced Data
/ "Synced Machines"
r.click 和 select "Turn off Settings Sync"
关闭设置同步。这似乎比简单地退出设置同步更有效。
现在单击正常的 vscode 齿轮图标(左下方)并登录到设置同步。这提示我像全新安装,是否合并,覆盖本地等。这次所有的扩展都OK了。
解决方案 2 - 从暂时性互联网错误导致的黑名单扩展程序中恢复
假设您在同步日志 (Settings Sync : Show Log
) 中看到一些 skipped 扩展:
[2021-12-30 14:05:57.690] [settingssync] [info] Extensions: Updated last synchronized extensions. Skipped: ["sapos.yeoman-ui","tht13.html-preview-vscode","patbenatar.advanced-new-file","alexisvt.flutter-snippets","vscjava.vscode-java-pack","vscjava.vscode-java-dependency","vscjava.vscode-java-test","vscjava.vscode-maven","vscjava.vscode-java-debug","janisdd.vscode-edit-csv","mohd-akram.vscode-html-format","zjhmale.vscode-ag"].
这会导致您机器上的文件 lastSyncextensions.json
中密钥 "skippedExtensions"
下的这些扩展似乎被永久列入黑名单。你如何解决这个问题?
You can get to
lastSyncextensions.json
via the commandSettings Sync : Open Local Backups Folder
and then open the file in vscode itself.
为了正确安装这些扩展,我编辑了 lastSyncextensions.json
并清除了列表 - 它现在显示为 "skippedExtensions":[]
。
然后我使用 vscode UI 转到之前跳过的每个特定扩展,并安装它。这也应该在可能受到影响的任何其他 vscode 机器上重新安装它。
Possibly, a simpler solution 2 (which I haven't tried) is don't bother with editing the file
lastSyncextensions.json
- simply do the brutal re-sync described in step 2 of my solution 1 above. Thus hopefully thelastSyncextensions.json
gets regenerated (as well as the problematic"skippedExtensions":
entry) and this time pray your internet connection is good and there are no download errors this time.
我只需要关闭和打开设置同步就可以了。