代码之家  ›  专栏  ›  技术社区  ›  Yves Daoust

替换宏在Visual Studio中不工作

  •  0
  • Yves Daoust  · 技术社区  · 7 年前

    我想在Visual Studio 2008中使用宏自动替换字符串。我已经使用记录器创建了宏(见下面的代码),但它不起作用(尽管在交互模式下,替换效果很好)。

    我希望替换应用于当前文档中的当前选择。我很惊讶看到文件的名字( Text.txt )显式显示,因此宏可能无法在另一个文件上工作,但它无论如何也无法在该文件上工作。

    以下是宏源:

    Sub Multiline()
        DTE.ExecuteCommand("Edit.Replace")
        DTE.Windows.Item("Text.txt").Activate()
        DTE.Find.FindWhat = "$"
        DTE.Find.ReplaceWith = "\n\n"
        DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocumentSelection
        DTE.Find.MatchCase = True
        DTE.Find.MatchWholeWord = False
        DTE.Find.MatchInHiddenText = True
        DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxRegExpr
        DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone
        DTE.Find.Action = vsFindAction.vsFindActionReplaceAll
        If (DTE.Find.Execute() = vsFindResult.vsFindResultNotFound) Then
            Throw New System.Exception("vsFindResultNotFound")
        End If
    End Sub
    

    作为参考,相应的替换对话框:

    enter image description here

    有什么线索吗?为什么会失败?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Yves Daoust    7 年前

    明白了,我是Windows更新中的一个已知问题的受害者,影响了Visual Studio。

    https://support.microsoft.com/en-us/help/2934830/marshaling-of-reflection-types-may-not-work-over-dcom-after-you-instal