引用 System.Management for Powershell on C# .NET 4.0 不起作用

Mic*_*ael 5 c# powershell

我有一个 .NET 4.0 C# 项目,我需要在 powershell 运行空间中通过 C# 运行 Powershell。我已经测试了我的代码,一切正常。

在新计算机(Win10、VS2017)上打开同一个项目并尝试运行同一个项目时出现问题。我已经在以下位置引用了 DLL:

C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

也使用命令执行此操作

using System.Management;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
Run Code Online (Sandbox Code Playgroud)

但无法识别 System.Management.Automation 和 System.Management.Automation.Runspaces。

出现错误:命名空间“System.Management”中不存在类型或命名空间名称“Automation”(您是否缺少程序集引用?)

不知何故,引用没有被使用......

Mic*_*ael 8

不确定到底发生了什么,但是当我引用以下 DLL 时: C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

VS 忽略了这个 DLL 并抱怨我们缺少自动化命名空间...虽然这个 DLL 显示为 .NET 4.0,但显然它是用更高版本的 .NET 编译的,这可以解释为什么它被忽略了。

为了解决这个问题,我必须通过浏览和选择这个 DLL 添加一个引用: C:\Windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

这可能看起来像是 Powershell 引擎的旧版本。

可能对此有所贡献的另一个注意事项是,在我的新 Win10 机器上,我安装了 VS2017,所以我没有手动安装 .NET 4.0 FW,也许 VS2017 安装放置了更高版本的 System.Management.Automation DLL...