1

这是有关Add-Type的 MS 文档

所以我试图通过命令行添加类型:

>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

但是无论我尝试执行什么都会返回一个错误。是否可以通过cmd控制台调用powershell来添加类型?然后执行添加的方法?

4

1 回答 1

1

这就是为什么你不能做你正在做的事情,并且文档特别显示了这一点。

此标点符号称为Here String。它有特定的用途。

如果您在真正的 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 中完成。

在这种情况下,控制台主机不会像编辑器一样显示语法错误。

每当您在控制台主机中键入需要 CRLF 等的代码时,您都必须以这种方式键入。最后,在 cmd.exe 中执行此操作永远不会显示 PowerShell 语法错误,除非您尝试运行它。

这就是完全理解 PowerShell 语法和标点符号。

PowerShell 标点符号完整指南

于 2020-04-23T00:33:23.757 回答