无法加载文件或程序集'System.Management.Automation, Version=3.0.0.0'

12

我正在使用C#构建一个应用程序,目前它只是调用了“get-process”powershell命令。

我已编辑csproj文件以包含System.Management.Automation。

<ItemGroup>
 <Reference Include="System.Management.Automation" />

在本地运行(Windows 8.1运行Powershell版本4),它可以工作。

当在运行Powershell版本2的远程Windows 7机器上运行时,程序会抛出异常。

System.IO.FileNotFoundException: Could not load file or assembly 'System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

它无法找到System.Management.Automation Version = 3.0.0.0。我曾相信这可以在任何版本的PowerShell上运行并引用本地版本。

Get-Process命令在PS V2上可行。

有没有可能停止强制使用系统管理自动化的3个版本?我已经阅读过可以在app.config中执行此操作,但未提及系统管理自动化。

感谢您的时间。

--------------------------------------------------编辑------------------------------------------------

我设定目标框架为.Net 3.5后,成功让它工作了,但是现在它强制使用PS V2。有没有办法将目标对准本地版本的系统管理dll,并让客户端使用该版本?


你能否在Windows 7上简单地更新Powershell?使用Chocolatey,输入命令> choco install Powershell即可。 - Chase Florell
如果你想让PowerShell版本2能够加载dll文件,那么你需要针对.NET 3.5进行目标定位。 - Mike Zboray
这似乎有些糟糕,因为通过针对.NET 3.5,我强制每个客户端只能使用PowerShell 2。肯定还有另一种方式吧? - Matt416
2个回答

11

Powershell 2.0 不包括 System.Management.Automation V3。System.Management.Automation是由Windows Management Framework Core提供的,而不是 .Net。如果您有 Powershell 2.0,则没有 Automation 3.0。欲知道在 Powershell 2.0 中提供的文件/程序集列表,请访问以下网站:

Windows Management Framework(Windows PowerShell 2.0、WinRM 2.0 和 BITS 4.0)

通过在目标计算机上安装来自 Microsoft 的 WMF 4.0 升级到 Powershell 4.0。

http://www.microsoft.com/en-us/download/details.aspx?id=40855


抱歉,我周末不在,我已标记为答案。我的程序有没有办法同时与PowerShell版本3+和版本2一起工作?似乎不可能。 - Matt416
2
需要发生两件事情中的一件。 要么为2.0程序集重写程序,要么升级程序集,使您的程序可以本地工作。 这是我所知道的唯一两个选项 :-/ - Colyn1337
1
我的PowerShell版本是4.0,仍然出现这个错误。 - Preeti

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接