Заменяющий макрос не работает в Visual Studio - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу сделать автоматическую замену строк в 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 Ответ

0 голосов
/ 06 февраля 2019

Понял, я стал жертвой известной проблемы в обновлении Windows, затрагивающей Visual Studio.

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

...