无论如何,是否可以通过编程方式修改.vssettings文件?

时间:2019-01-28 21:02:05

标签: xml-parsing visual-studio-2017 reverse-engineering vssettings

好吧,在这里我需要一些指导,因为,我不知道我是否在选择简单/正确的方法来实现自己的目标。

让我解释一下我正在尝试的内容:

  

我正在尝试使用自己的项目来避免由创建的冗余数据   git子模块(使用依赖项时(我不是说NuGet软件包,   我的意思是开源依赖))通过存储此   项目/依赖项放在一个公共文件夹中,然后链接到任何   我需要的项目(有人建议我这是一个糟糕的设计,   因为想要为我的开源做出贡献的新开发人员   项目将需要我的项目(我正在谈论的项目)以确保   他们能够对其进行修改并做出贡献。)

出于这个原因,我意识到,避免这种情况的唯一方法是创建一个VSIX项目(以避免跨平台问题),以确保已纠正分叉项目的依赖关系。

但是我想保持简单,因为我从未做过VSIX扩展。因此,研究发现this topic(这与如何使用Solution Explorer context menu菜单和Tools > External Tools来修改Tools > Customize...正是我真正需要的)。

问题来了。这需要手动完成,我想避免这种情况。

自动化这有点头疼,因为我不知道从哪里开始。

首先,我创建了自己的“外部工具”绑定(以Sublime Text为例),然后使用“ Windows上的Ubuntu子系统”,感谢this answer,我用ag命令进行了搜索我使用的关键字:

...

然后,ag将我带到~\AppData\Local\Microsoft\VisualStudio\<version>_<hash>\Settings\CurrentSettings.vsettings文件中,我发现了以下几行:

    <Category name="Environment_ExternalTools" Category="{E8FAE9E8-FBA2-4474-B134-AB0FFCFB291D}" Package="{DA9FB551-C724-11d0-AE1F-00A0C90FFFC3}" RegisteredName="Environment_ExternalTools" PackageName="Visual Studio Environment Package">
        <ExternalTools>
            <UserCreatedTool>
                <Arguments>$(ItemPath)</Arguments>
                <CloseOnExit>true</CloseOnExit>
                <Command>subl</Command>
                <Index>3</Index>
                <InitialDirectory>$(ItemDir)</InitialDirectory>
                <IsGUIapp>false</IsGUIapp>
                <NameID>0</NameID>
                <Package>{00000000-0000-0000-0000-000000000000}</Package>
                <PromptForArguments>false</PromptForArguments>
                <SaveAllDocs>true</SaveAllDocs>
                <Title>Sublime Text</Title>
                <Unicode>false</Unicode>
                <UseOutputWindow>true</UseOutputWindow>
                <UseTaskList>false</UseTaskList>
            </UserCreatedTool>
        </ExternalTools>
    </Category>

然后,我从链接的第一个主题开始进行第三步,并检查了保存时创建的差异,然后,当您使用“工具>定制...”窗口时,这就是VS保存到其设置中的内容:

            <UserCustomizations>
                <add Cmd="{5EFC7975-14BC-11CF-9B2B-00AA00573819}:00000279" CmdPri="00308001" Group="{000AF700-CF09-4582-9E1C-2603403AB647}:00004115" GroupPri="00050000" Menu="{D309F791-903F-11D0-9EFC-00A0C911004F}:00000402"/>
                <modify Cmd="{000AF700-CF09-4582-9E1C-2603403AB647}:00000407" CmdPri="00000000" Group="{000AF700-CF09-4582-9E1C-2603403AB647}:00004014" GroupPri="00050000" Menu="{D309F791-903F-11D0-9EFC-00A0C911004F}:00000402" BeginGroup="false"/>
                <modify Cmd="{000AF700-CF09-4582-9E1C-2603403AB647}:00004225" CmdPri="00300000" Group="{000AF700-CF09-4582-9E1C-2603403AB647}:00004115" GroupPri="00050000" Menu="{D309F791-903F-11D0-9EFC-00A0C911004F}:00000402" BeginGroup="true"/>
                <modify Cmd="{5EFC7975-14BC-11CF-9B2B-00AA00573819}:00000279" CmdPri="00308001" Group="{000AF700-CF09-4582-9E1C-2603403AB647}:00004115" GroupPri="00050000" Menu="{D309F791-903F-11D0-9EFC-00A0C911004F}:00000402" BeginGroup="true"/>
                <modify Cmd="{B92A417B-195E-41E4-9391-64F7D025020D}:00000100" CmdPri="01000000" Group="{B92A417B-195E-41E4-9391-64F7D025020D}:00001020" GroupPri="00010000" Menu="{D309F791-903F-11D0-9EFC-00A0C911004F}:00000430" BeginGroup="false"/>
            </UserCustomizations>

我被困在这一部分,因为在这两个XML部分之间找不到任何类似的GUID。

因此,我不知道从哪里开始,因为我找不到addmodify标签的任何文档,也没有CmdCmdPri,{ {1}}或GroupPri属性。

为什么Menu节中的Package标签GUID值是空的?

我正在尝试对此进行反向工程以尝试对其进行解析,然后对其进行修改。但是我不明白发生了一半的事情。

此外,我不知道是否有可用的解析器来完成此任务。

任何有关此方面的指导都将被理解。

0 个答案:

没有答案