【问题标题】:How to Program a Visual Studio 2010 Macro For accessing and editing specific Project files?如何编写 Visual Studio 2010 宏以访问和编辑特定项目文件?
【发布时间】:2011-04-21 20:45:43
【问题描述】:

我想编写一个宏来将选定的文本放入我项目中的特定 XML 文件中。例如我的路径是 ~/Pages/Dictionary/en.xml。我想将选定的文本从 aspx.cs 文件放到 en.xml 文件中。
请指导我从哪里开始。我可以得到选定的文本。现在我不知道如何访问文件内容转到文件末尾(或文件中的其他位置)并根据所选文本插入一些文本。

【问题讨论】:

    标签: xml visual-studio visual-studio-2010 macros visual-studio-macros


    【解决方案1】:

    要打开文件,请使用解决方案资源管理器中的树路径或仅使用完整文件路径:

    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
    DTE.ActiveWindow.Object.GetItem _
        ("{solutionname}\{projectname}\Pages\Dictionary\en.xml") _
        .Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.ActiveWindow.Object.DoDefaultAction()
    

    或

    DTE.ItemOperations.OpenFile _
        ("{projectpath}\Pages\Dictionary\en.xml")
    DTE.ActiveDocument.Activate()
    

    您没有提到这是否适用于单个项目和/或解决方案,所以我不知道仅对花括号中的项目进行硬编码是否就足够了。


    要在文件末尾插入文本,您可以选择文档末尾并粘贴(例如,如果您使用了Selection.Copy()),或者您可以创建一个编辑点并插入任何文本:

    DTE.ActiveDocument.Selection.EndOfDocument()
    DTE.ActiveDocument.Selection.Paste()
    

    或

    Dim editPoint As EnvDTE.EditPoint
    selection = DTE.ActiveDocument.Selection()
    editPoint = selection.TopPoint.CreateEditPoint()
    editPoint.Insert("any text" + vbLf)
    

    我不确定文件末尾是否是您要添加文本的真实位置;如果没有,可以使用例如导航文档。 StartOfLine()、LineUp()、WordRight(),或以其他方式转至control the code editor。

    【讨论】:

    • 谢谢,但我不想激活或查看目标文件。我想动态插入一些文本(例如 XML 节点作为字符串到 XML 文件)并保存文件而不查看、打开或激活它。可以处理吗?!
    • 当然,尽管您没有提到不应在编辑器中打开文件:只需在宏代码中使用普通的System.IO.File 或System.IO.Stream 调用和操作对其进行编码...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    相关资源
    最近更新 更多