命名空间“系统管理”中缺少自动化.缺少程序集引用
本文关键字:系统管理 引用 自动化 程序集 命名空间 | 更新日期: 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