命名空间'System.Management'中缺少自动化。缺少装配参考

时间:2014-12-09 08:52:34

标签: c# .net powershell

系统:Windows 7 Professional 64位,PowerShell v 2.0,无Visual Studio(无法安装,其他也无法安装)

尝试从C#运行PowerShell。这是代码段:

using System;
using System.Management.Automation;  

class Hello {
    static void Main(string[] args) {           
        PowerShell ps = PowerShell.Create();
        ps.AddCommand("Get-Process");
        Console.WriteLine("Process                 Id");
        Console.WriteLine("----------------------------");
        foreach (PSObject result in ps.Invoke()) {
            Console.WriteLine(
            "{0,-24}{1}",
            result.Members["ProcessName"].Value,
            result.Members["Id"].Value);
            } 
        }       
    }

错误:

  

e:\ foo.cs(2,25):错误CS0234:命名空间“System.Management”中不存在类型或命名空间名称“Automation”(您是否缺少程序集引用?)

由于没有Visual Studio,我以原始方式运行代码。由于错误,我从http://www.dll-found.com/system.management.automation.dll_download.html下载了dll并按照说明放在dir中。重启机器后,没有成功。

首先,我想问一个普遍的问题。如何安装缺少的程序集或dll文件(仅限),因为对于某些人,您可能必须安装整个Windows或PowerShell SDK或.NET Framework。

修改
我已将下载的dll文件放在C:\ Windows \ SysWOW64,C:\ Windows \ system32,C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework \ v3.5和C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework中\ V3.0。

我正在编译使用: C:\ Windows \ Microsoft.NET \ Framework \ v3.5 \ csc.exe / target:exe /out:E:\foo.exe E:\ foo.cs

3 个答案:

答案 0 :(得分:3)

您必须使用/reference命令行参数csc.exe中描述的C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe /reference:system.management.automation.dll /target:exe /out:E:\foo.exe /E:\foo.cs

{{1}}

答案 1 :(得分:1)

如果您在将旧项目重新定位到 .NET 4.8 等后遇到此问题,则是因为 NuGet 包名称已更改。

  • 卸载软件包 System.Management.Automation
  • 安装包 Microsoft.PowerShell.5.1.ReferenceAssemblies (NuGet)

此包名称出现在命名空间 System.Management.Automation 中类的 documentation 中。

答案 2 :(得分:0)

NuGet为我工作。

PM>安装软件包System.Management.Automation.dll-版本10.0.10586