命名空间“系统管理”中缺少自动化.缺少程序集引用

本文关键字:系统管理 引用 自动化 程序集 命名空间 | 更新日期: 2023-09-27 18:33:43

系统: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"中不存在类型或命名空间名称"自动化"(是否缺少程序集引用?

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

首先,我想问一个一般性问题。如何安装缺少的程序集或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

命名空间“系统管理”中缺少自动化.缺少程序集引用

警告:在任何理智的情况下,永远不要从随机网站下载 DLL。尽可能使用 NuGet 包(或项目的首选包管理器(。如果找不到DLL,几乎总是有充分的理由,您需要找出它是什么并修复它,而不仅仅是从互联网上获取DLL。

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

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

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

NuGet 为我工作。

PM> 安装包系统.管理.自动化.dll - 版本 10.0.10586

您必须使用命令行参数来csc.exe /reference 中描述的 MSDN:

C:'Windows'Microsoft.NET'Framework'v3.5'csc.exe /reference:system.management.automation.dll /target:exe /out:E:'foo.exe /E:'foo.cs