我有.NET Framework类库,其中包含一些使用旧版Powershell的代码:
using System.Management.Automation.Runspaces;
using System.Management.Automation;
//some code executing powershell commands in runspaces and processing results, similar to this:
var runspace = RunspaceFactory.CreateRunspace();
using (var powerShell = PowerShell.Create())
{
powerShell.Runspace = runspace;
powerShell.Commands.AddScript(psscript);
results = powerShell.Invoke();
//process results, etc...
}
我正在尝试使用带有Powershell Core的软件包Microsoft.Powershell.SDK
将其移植到.NET Core。它在大多数情况下都可以正常运行,但是由于明显的原因,它无法运行旧的Powershell命令(add-pssnapin
等)。
该类库旨在在各种机器上使用,其中一些机器需要那些旧的powershell命令才能工作,而另一些机器则需要使用Powershell Core。我该如何实现?
我能想到的唯一解决方案是制作两个单独的项目,其中一个用于.NET Framework,另一个用于.NET Core,但是似乎有两个具有相同代码的项目(带有这些旧命令的4-5行除外)就像一个坏主意。有没有更好的方法可以做到这一点?