我如何通过命令行在powershell中使用Add-Type来执行VB.NET或C#(或JScript.net)代码?

问题描述 投票:0回答:1

以下是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来添加类型?然后执行添加的方法?

c# vb.net powershell jscript.net add-type
1个回答
1
投票

这就是为什么你不能做你正在做的事情,文档中特别说明了这一点。

这个标点符号叫做 这里的字符串。 并且它有特定的用途。

如果你在真正的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不会像编辑器一样显示语法错误,如果在这种情况下,根本不会显示。

任何时候在consolehost中输入需要CRLF之类的代码,都要这样输入。最后,在cmd.exe中这样做永远不会显示PowerShell语法错误,直到你尝试运行它。

这就是充分理解PowerShell语法和标点符号的全部内容。

PowerShell标点符号完整指南

© www.soinside.com 2019 - 2024. All rights reserved.