系统: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
答案 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