Вызвать EnvDTE.TextSelection.FindPattern из PowerShell не удается из-за несоответствия типов - PullRequest
1 голос
/ 03 апреля 2012

Я создаю пользовательский скаффолдер для использования с MvcScaffolding . Пытаясь автоматизировать добавление кода в начало метода, я придумал следующий код:

$codeElement = Get-ProjectType "MyType"

foreach ($member in $codeElement.Members)
{
    if ($member.Name -eq "CreateMappings")
    {
        $editPoint = $member.StartPoint.CreateEditPoint()

        # here's where it's crashing
        $editPoint.FindPattern("\{")

        $editPoint.Insert("text")
    }
}

Когда я запускаю свой пользовательский скаффолдер, FindPattern завершается ошибкой с

Exception calling "FindPattern" with "1" argument(s): "Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))"

At Path\File.ps1:62 char:26
+             $editPoint.FindPattern <<<< ("\{")
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation

В отличие от этого макроса, который работает просто отлично:

Sub macro()
    Dim objTD As TextDocument = DTE.ActiveDocument.Object("TextDocument")
    Dim editPoint As EditPoint = objTD.StartPoint.CreateEditPoint()
    If (editPoint.FindPattern("\{", vsFindOptions.vsFindOptionsRegularExpression)) Then
        editPoint.CharRight()
        editPoint.Insert("text")
    End If
End Sub

Что я делаю не так?

...