使用ReSharper 8.2 SDK在C#中使用上下文操作自定义本地化重构

使用ReSharper 8.2 SDK在C#中使用上下文操作自定义本地化重构,c#,xml,resharper,resharper-8.0,resharper-sdk,C#,Xml,Resharper,Resharper 8.0,Resharper Sdk,我们的.NET 4.0 C#项目的本地化基本上如下所示: MyCompany.Resources.dll包含两个RESX文件:A.RESX和B.RESX及其本地化副本(A_de.RESX,B_hu.RESX等)。这些文件由常见的RESX xml元素组成,如value MyCompany.Common.dll包含一个公共(单例)类MyCompanyResourceManager,该类有两种方法用于按键访问a.resx和B.resx中的本地化值,如GetA(字符串键)和GetB(字符串键) 只要C#

我们的.NET 4.0 C#项目的本地化基本上如下所示:

  • MyCompany.Resources.dll
    包含两个RESX文件:
    A.RESX
    B.RESX
    及其本地化副本(
    A_de.RESX
    B_hu.RESX
    等)。这些文件由常见的RESX xml元素组成,如
    value

  • MyCompany.Common.dll
    包含一个公共(单例)类
    MyCompanyResourceManager
    ,该类有两种方法用于按键访问
    a.resx
    B.resx
    中的本地化值,如
    GetA(字符串键)
    GetB(字符串键)

  • 只要C#代码中存在需要本地化的字符串,我们就可以使用XML编辑器手动打开
    a.resx
    B.resx
    (Visual Studio资源编辑器将XML中的某些内容搞乱),使用新键向XML文档添加新的
    标记,在C代码中,我们手动将字符串替换为调用
    MyCompanyResourceManager.Instance.GetA(…)
    (或
    GetB(…)

  • 使用ReSharper中的代码片段和活动模板可以加快这项工作,但我觉得需要为这个“工作流”提供更好的解决方案(而不是本地化机制,它是无法更改的:)。这就是为什么a想写一个ReSharper插件来完成重复的部分。我希望达到的目标是:

    • 当插入符号位于C代码中的字符串文字上时,提供上下文操作
      在a中本地化
      在B中本地化
    • 当我选择其中一个时,弹出一个对话框,提示用户在RESX中使用的密钥
    • 将新的
      标记放在相应的RESX文件中,并用适当的方法调用替换字符串文字。如果需要,请导入MyCompanyResourceManager类的命名空间,如果需要,请引用其程序集。(引用程序集不是必须的,因为可以假定
      MyCompany.Common
      在任何地方都被引用)
    • 打开所选的RESX文件以查看更改
    可选功能(使插件更广泛可用):

    • 设置页面以指定RESX文件(甚至超过两个)、相应的方法调用以及包含这些方法的类
    • 在提示键之前,在所选的RESX文件中搜索字符串文字,以防它已经本地化
    我的问题:

    • 我有点迷失在它不完整的文档中,因此关于可用类/接口的全面材料/教程将非常好(如果有)
    • 如何使用ReSharper API在Visual Studio中打开项目/解决方案文件
    • 如何使用ReSharper API操作XML文件?示例上下文操作是一个反向字符串,因此访问插入符号下的文本是可以的
    • 对于这个场景,我应该使用上下文操作还是重构
    • 如何从上下文操作开始重构
    • 从何处开始,对于此任务的API应该了解哪些内容
    提前谢谢