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

问题描述

我使用 Windows 窗体项目只是为了尝试在使用 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 控制台应用程序下使用哪个库/包?

解决方法

我在 C#/.NET 版本 4.7.2 下使用 Winforms

假设您想要该运行时的最新可用版本,您需要引用 "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 版本的默认版本)。


此外,您应该在 .NET 5 控制台应用程序下使用哪个库/包?

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


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