【发布时间】:2011-01-09 18:00:54
【问题描述】:
我经常需要将现有的 C# 代码 sn-p/.CS 文件转换为 PowerShell 脚本。我怎样才能使这个过程自动化?
虽然我知道有些方法可以convert a .cs file to a cmdlet,但我只对将 C# 代码转换为脚本或模块感兴趣。
【问题讨论】:
标签: c# powershell powershell-2.0
我经常需要将现有的 C# 代码 sn-p/.CS 文件转换为 PowerShell 脚本。我怎样才能使这个过程自动化?
虽然我知道有些方法可以convert a .cs file to a cmdlet,但我只对将 C# 代码转换为脚本或模块感兴趣。
【问题讨论】:
标签: c# powershell powershell-2.0
我知道您正在寻找能够以某种方式将 C# 直接转换为 PowerShell 的东西,但我认为这已经足够接近建议了。
在 PS v1 中,您可以使用已编译的 .NET DLL:
PS> $client = new-object System.Net.Sockets.TcpClient
PS> $client.Connect($address, $port)
在 PS v2 中,您可以将 C# 代码直接添加到 PowerShell 中并使用它而无需使用 Add-Type 进行“转换”(直接从 MSDN 复制)
C:\PS>$source = @"
public class BasicTest
{
public static int Add(int a, int b)
{
return (a + b);
}
public int Multiply(int a, int b)
{
return (a * b);
}
}
"@
C:\PS> Add-Type -TypeDefinition $source
C:\PS> [BasicTest]::Add(4, 3)
C:\PS> $basicTestObject = New-Object BasicTest
C:\PS> $basicTestObject.Multiply(5, 2)
【讨论】:
有一个 Reflector add-in for PowerShell 可以让您查看类上静态方法的相应 PowerShell 脚本
有一个很好的例子:http://blogs.msmvps.com/paulomorgado/2009/09/17/powershell-for-the-net-developer/。
【讨论】:
PowerShell Pro Tools for Visual Studio 具有在 PowerShell 脚本中转换 C# 代码的功能。
【讨论】:
Adam Discroll 有 created 一个基于 Roslyn 的转换器,他甚至提供了一个 online code converter - 它似乎适用于简单的脚本,但在静态成员或类方面存在问题。
【讨论】: