PowerShell - 如何正确嵌入 Windows Forms 项目 - .NET 4.7.2

PowerShell - how to properly embed in Windows Forms project - .NET 4.7.2

我正在使用 Windows Forms 项目只是为了尝试在使用 PowerShell 脚本的应用程序中测试一些脚本编写的想法。我无法弄清楚要添加什么 Nuget 包。

我在我的项目中尝试了 System.Management.Automation 的多个版本。 https://foxlearn.com/windows-forms/how-to-execute-powershell-script-in-csharp-444.html 上面的文章并没有真正涉及版本信息。 当我添加 Nuget 包时,我没有看到 Runspace 或 PowerShell 对象。

我在 C#/.NET 版本 4.7.2 下使用 Winforms。此外,您应该在 .NET 5 控制台应用程序下使用哪个 library/package?

I am using Winforms under C# / .NET version 4.7.2

假设您想要该运行时的最新可用版本,您需要参考 "PowerShell 5.1 Reference Assemblies" package:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.PowerShell.5.1.ReferenceAssemblies" version="1.0.0" targetFramework="net472" />
</packages>

顾名思义,这个包只是一个浅层元数据引用,生成的二进制文件将在运行时依赖于 Windows PowerShell 5.1(Windows 当前支持的所有版本中的默认版本10).


Also, which library/package should you use under a .NET 5 console app?

在这种情况下,您选择System.Management.Automation的最新兼容版本。


如果您发现自己处于必须为 .NET Framework >4.5 .NET 5 开发共享 PowerShell 组件的情况,您可能希望利用PowerShellStandard.Library package - 它是一个 .NET Standard 包,仅公开 API 中可用的部分 5.1(因此它适用于 .NET Framework 应用程序)和 6(因此它也适用于 .NET Core /.NET 5)