我开始研究PowerShell模型和插件开发,首先注意到的是需要引用System.management.automation.dll。然而,在Visual Studio中,.NET选项卡没有该程序集,也无法浏览到
C:\windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll
以进行基于文件的引用。
我开始研究PowerShell模型和插件开发,首先注意到的是需要引用System.management.automation.dll。然而,在Visual Studio中,.NET选项卡没有该程序集,也无法浏览到
C:\windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll
以进行基于文件的引用。
NuGet上的System.Management.Automation
NuGet上的System.Management.Automation.dll,这是2015年发布的新版本包,与先前的版本不同,没有被取消列出!
Microsoft PowerShell团队在NuGet上的软件包
更新:该软件包现在由PowerShell团队所有。太好了!
如果你不想安装Windows SDK,你可以通过在powershell中运行以下命令来获取dll:
Copy ([PSObject].Assembly.Location) C:\
我无法正确安装SDK(有些文件似乎未签名,类似于这样的问题)。我在这里找到了另一个解决方案,对我而言似乎可以正常工作。它根本不需要安装新文件。基本上,您需要做的是:
在文本编辑器中编辑.csproj文件,并添加以下内容:
<Reference Include="System.Management.Automation" />
到相关部分。
正如@skfd所提到的,如果你的目标是 .Net 4.8 或更早版本,则可以在NuGet上获取System.Management.Automation.dll包,但现在已被下架,因此你需要手动安装。例如:
PM >Install-Package System.Management.Automation.dll -Version 10.0.10586
如果你的目标是 .Net Core 或 Framework 5/6,System.Management.Automation 包也可以使用,并且似乎是未来支持的包。你也可以尝试安装此包并手动添加引用,但效果可能会有所不同。
随附Powershell SDK的程序集(C:\ Program Files \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ v1.0)不带有Powershell 2特定类型。
手动编辑csproj文件解决了我的问题。