Как я могу использовать Add-Type в powershell через командную строку для выполнения кода VB. NET или C# (или JScript. net)? - PullRequest
1 голос
/ 22 апреля 2020

Вот документация MS, касающаяся Add-Type

Так что я пытаюсь добавить тип через командную строку:

>powershell Add-Type -TypeDefinition "public class T{public static int Add(int a, int b){return (a + b);}}" -Language CSharp

или

>powershell Add-Type -TypeDefinition "@"""public class T{public static int Add(int a, int b){return (a + b);}}"""@" -Language CSharp

или

>powershell Add-Type -TypeDefinition "@"""public class T{public static int Add(int a, int b){return (a + b);}}"""@" -Language CSharp

или

>powershell Add-Type -TypeDefinition @"public class T{public static int Add(int a, int b){return (a + b);}}"@ -Language CSharp

Но все, что я пытаюсь выполнить, возвращает ошибку. Можно ли добавить тип, вызвав powershell через консоль cmd? А затем выполнить добавленные методы?

1 Ответ

1 голос
/ 23 апреля 2020

Вот почему вы не можете делать то, что делаете, и документы конкретно показывают это.

Эта пунктуация называется Here String. и служит определенной цели c .

Если вы сделали это в реальном редакторе PowerShell (ISE, VSCode), обратите внимание, что помещение всего этого в одну строку приводит к синтаксической ошибке.

Правильная здесь строка

$Source = @"
public class T
{
    public static int Add(int a, int b)
    {
        return (a + b);
    }
}
"@

Это не правильно (будет отображаться синтаксическая ошибка подсветки) ...

$Source = @"public class T{public static int Add(int a, int b){return (a + b);}}"@

... потому что эти '@ "" @' должны быть в отдельных строках и полностью выровнены по левому краю, и ничто не может следовать первый в той же строке или перед вторым в той же строке

Это не показывает подсветку синтаксической ошибки:

$Source = @"
public class T{public static int Add(int a, int b){return (a + b);}}
"@

... это можно сделать в консольный хост PowerShell, но не cmd.exe, вызывающий powereshell.exe.

На консольном хосте не будут отображаться синтаксические ошибки, равно как и редакторы, если они вообще есть.

Каждый раз, когда вы печатаете код в consolehost, который требует CRLF или тому подобное, Вы должны напечатать это таким образом. И, наконец, выполнение этого в cmd.exe никогда не будет отображать ошибки синтаксиса PowerShell, пока вы не попытаетесь его запустить.

Это все о полном понимании синтаксиса и пунктуации PowerShell.

Полное руководство по пунктуации PowerShell

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...