在Visual Studio中引用system.management.automation.dll


131

我开始研究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包方法似乎是最简单,最可靠的方法。
julealgon

Answers:


165

Nuget上的System.Management.Automation

NuGet上的System.Management.Automation.dll,2015 年以来的较新软件包,不是未列出的上一个!

Microsoft PowerShell团队将NuGet软件包打包

更新:软件包现在归PowerShell团队所有。晕!


2
这值得更多关注
foob​​arcode'2

5
我希望Microsoft拥有此Nuget的所有权,因为这几天它们是如此开放。
skfd 2015年

@skfd微软已经相当拥有Nuget了。它背后的人们使用microsoft.com电子邮件,而NuGet本身是Microsoft .NET Foundation(dotnetfoundation.org)的一部分
Michael Bisbjerg,2016年

1
@MichaelBisbjerg,我认为他主要是指这个特定的NuGet软件包。如果它是微软的产品,然后(在一个理想的世界),他们将负责保持它的更新,发布新包等
本·兰德尔

最后更新日期:2013/03/29“所有者未列出此软件包。这可能意味着该软件包已被弃用或不再使用。”
juFo

97

在安装Windows SDK时,将安装System.Management.Automation.dll的副本(始终是它的合适的最新版本)。它应该在C:\ Program Files \ Reference Assemblys \ Microsoft \ WindowsPowerShell \ v1.0 \


2
我已经在2个不同的64位计算机上安装了SDK(有困难),并且仅在1个文件夹中找到了版本6.2.8229.0、4.66MB dll,并且仅在c:\ program files(x86)\ referenceassembly \ microsoft \ windowspowershell中\ v1.0。我强烈建议编辑.csproj文件,或检入正确的DLL以进行源代码控制并引用它。SDK的安装太不灵活了。
詹姆斯·麦克拉克兰

@ ashes999 PowerShell 2.0实际上在1.0 DLL上运行。
kravits88


我不知道SDK,但我知道WMF 3.0 不会将其安装到C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 3.0。我想就其中有位于C版本1.0在Windows 7 SP1安装PowerShell 3.0:\ Program Files文件(x86)的\参考大会\微软\ WindowsPowerShell \ 1.0和我使用的Windows6.1-KB2506143-x64.msi从微软.com / en-us / download / details.aspx?id = 34595并成功运行。但是,它仅在C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ System.Management.Automation / v4.0_3.0.0.0__31bf3856ad364e35中创建* .dll。
亚历山大·萨莫洛夫

这是一个正确的* .dll,因为如果移动* .dll,命令“ powershell.exe -version 3.0”将停止工作。* .dll的大小不同于默认情况下在另一台Windows 10计算机上的C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 3.0。我可以在Windows 7 SP1计算机上创建文件夹C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 3.0,然后从C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ System放置* .dll。 Management.Automation / v4.0_3.0.0.0__31bf3856ad364e35,但问题是如何正确安装。
亚历山大·萨莫洛夫

85

如果您不想安装Windows SDK,则可以通过在powershell中运行以下命令来获取dll:

Copy ([PSObject].Assembly.Location) C:\

8
现在,太好了!
8DH,

2
很甜。不会想到这一点。
马吕斯

谢谢你 NuGet软件包在全新的.NET 4.5.2控制台应用程序中对我不起作用。它“安装”了软件包,但拒绝添加引用。我终于停止了与NuGet的斗争,并使用您的答案手动添加了参考。谢谢!
Lews Therin

77

我无法正确安装SDK(某些文件似乎未签名,类似这样)。我在这里找到了另一个解决方案,对我来说似乎还可以。它根本不需要安装新文件。基本上,您要做的是:

在文本编辑器中编辑.csproj文件,并添加:

<Reference Include="System.Management.Automation" />

到相关部分。

希望这可以帮助。


1
对于我来说,我们必须手动执行此操作(编辑.csproj文件)似乎很奇怪,但是它对我有用。
kd7iwp 2012年

编辑项目文件只会强制其从GAC(即V2版本)而不是文件系统(即V1版本)中加载版本
Derek Evermore 2013年

将应用程序部署到服务器时,这可能会导致问题,因为可能在那里找不到程序集。
marsze

9

如果是64位的话-C:\ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell ** 3.0 **

和版本可能不同


2

我使用了“ VS项目参考”菜单,然后浏览至:C:\ windows \ assembly \ GAC_MSIL \ System.Management.Automation,并为dll和Runspaces dll添加了参考。

我不需要修改.csprj文件并添加上述参考行。我没有安装Windows SDK。

我确实做了上面提到的Powershell复制:复制([PSObject] .Assembly.Location)C:\

然后使用Get-Process Powershell命令进行测试。我使用了Powershell中针对开发人员的示例,第5章。


1

Powershell SDK附带的程序集(C:\ Program Files \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ v1.0)不附带Powershell 2特定类型。

手动编辑csproj文件解决了我的问题。


0

您也可以使用nuget:https ://www.nuget.org/packages/System.Management.Automation/ 这可能是一个更好的选择。


我遇到的问题是,在项目中引用了正确的DLL,但是重新生成时出现了一个错误,即找不到自动化程序包。使用Nuget可以解决此问题。运行安装程序包时,请确保在程序包管理器控制台中选择正确的“默认项目”。
user3523091 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.