gpt4 book ai didi

visual-studio-code - VSCode如何全局清除workspaceState数据?

转载 作者:行者123 更新时间:2023-12-05 03:52:31 46 4
gpt4 key购买 nike

我在我的扩展中使用 workspaceState 实现了每个工作区的备份功能。由于数据可能很敏感 - 我想在扩展停用/卸载时清除所有工作区状态。

ExtensionContext 无法使用其工作空间状态清除不同工作空间中的所有扩展相关数据。

所以我考虑过将数据保存在 ExtensionContext globalState 上,用工作区 ID 标记每个条目。问题是工作区命名空间不提供唯一标识当前工作区的方法。我考虑过散列工作区名称和路径,但这两件事都是可变的,任何更改都会破坏指向数据的指针。这正是我不能只将文件写入内部文件夹的原因。我唯一的其他解决方案是将备份数据直接写入工作区,我想避免这种情况。

VSCode 如何维护哪个 workspaceState 属于哪个工作空间的知识?如何将数据绑定(bind)到工作区,但可以从 VSCode 中的其他任何地方访问?

最佳答案

旁注:您一般应避免保存敏感数据。如果有必要,请尝试对其进行加密。

无论如何:

我没有完整的答案,但我正在研究类似的东西(我使用的扩展程序由于 WorkspaceState 中现在无效的设置而崩溃)。

我在此文件夹 (windows) 中找到了工作区状态的存储:

%appdata%\Code\User\workspaceStorage\

在那里,您会发现许多具有基于十六进制名称的文件夹。在这些文件夹中,我总能找到 2 个名为 state.vscdbstate.vscdb.backup 的文件。

通常有一个名为 workspace.json 的第三个文件,它可以帮助您确定您是否在正确的工作区中。 (但您必须遍历所有文件夹 - 也许有一种方法可以找出来自扩展 API 的文件夹名称?)

如果您打开 state.vscdb 文件,您会发现在我看来很像序列化对象集的内容。它确实有一些未知功能的分隔符。但您还会在其中找到明显来自 VSC 不同模块的完整路径或名称 - 包括扩展。

我不需要担心其他缓存的东西,我只是要删除整个文件夹来解决我当前的问题。但我很确定,人们可以弄清楚文件的构建方式,并在必要时编辑掉您的敏感数据。

state.vscdb.backup-文件看起来很像名字所告诉您的:他们可能只是每隔几分钟就复制另一个文件,以便您有后备位置。

关于visual-studio-code - VSCode如何全局清除workspaceState数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62162185/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com