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

回答:


165

NugetのSystem.Management.Automation

2015年の新しいパッケージであるNuGetのSystem.Management.Automation.dllは、以前のパッケージとしてリストされていません!

Microsoft PowerShellチームがNuGetをパッケージ化

更新:パッケージはPowerShellチームが所有するようになりました。フザー!


2
これはさらに価値があります
foob​​arcode '10

5
MicrosoftがこのNugetの所有権を取得したことを願っています。
skfd

@skfd MicrosoftはすでにNugetをかなり所有しています。その背後にいる人々はmicrosoft.comメールを使用しており、NuGet自体はMicrosofts .NET Foundation(dotnetfoundation.org)の一部です
Michael Bisbjerg

1
@MichaelBisbjerg、彼は主にこの特定のNuGetパッケージを参照していたと思います。それはMicrosoftが所有していた場合には、(理想の世界で)彼らはなど、新しいパッケージをリリース、更新、それを維持するための責任を負うことになる
ベン・ランドール

最終更新日2013/03/29「所有者がこのパッケージを非公開にしました。これは、このパッケージが廃止されているか、今後使用されないことを意味している可能性があります。」
juFo 2018年

97

Windows SDK(とにかく適切な最新バージョン)をインストールすると、System.Management.Automation.dllのコピーがインストールされます。C:\ Program Files \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ v1.0 \にあります。


2
SDKを2つの異なる64ビットマシン(問題あり)にインストールし、バージョン6.2.8229.0、4.66MB dllを1つだけ、c:\ programファイル(x86)\ reference assembly \ microsoft \ windowspowershellにのみ見つけました\ v1.0。.csprojファイルを編集するか、適切なDLLをソース管理にチェックインして参照することを強くお勧めします。SDKのインストールは柔軟性に欠けます。
James McLachlan、

@ ashes999 PowerShell 2.0は実際には1.0 DLL上で実行されます。
kravits88 2013

3
x64上の2014.07.11 C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 3.0 \ System.Management.Automation.dll
Christopher G. Lewis

SDKについては知りませんが、WMF 3.0 それをC:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 3.0にインストールしないことを知ってます。私はCにあるバージョン1.0を持っていたのWindows 7 SP1上のPowerShell 3.0をインストールしたかった:\プログラムファイル(x86の)\リファレンスアセンブリ\マイクロソフト\ WindowsPowerShell \ 1.0およびIから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を作成しました。
Alexander Samoylov

* .dllを移動するとコマンド「powershell.exe -version 3.0」が機能しなくなるため、これは適切な* .dllです。* .dllのサイズは、C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 3.0の別のWindows 10マシンにデフォルトで存在するサイズとは異なります。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ですが、問題は、それを適切にインストールする方法です。
Alexander Samoylov

85

Windows SDKをインストールしたくない場合は、Powershellで次のコマンドを実行してDLLを取得できます。

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

8
今それは素晴らしいです!
2013年

2
とても甘い。そのことを考えていなかっただろう。
マリウス2013年

これをありがとう。NuGetパッケージは、まったく新しい.NET 4.5.2コンソールアプリでは機能しません。パッケージを「インストール」しましたが、参照の追加を拒否しました。私はついにNuGetとの戦いをやめ、あなたの答えを使用して参照を手動で追加しました。ありがとう!
Lews Therin

77

SDKを正しくインストールできませんでした(一部のファイルは署名されていないようです)。私はここに別の解決策を見つけまし、そしてそれは私にとってはうまくいくようです。新しいファイルをインストールする必要はまったくありません。基本的に、あなたがすることは:

テキストエディターで.csprojファイルを編集し、以下を追加します。

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

関連セクションへ。

お役に立てれば。


1
これを手動で(.csprojファイルを編集して)行う必要があるのは奇妙に思えますが、私にとってはうまくいきました。
kd7iwp 2012

プロジェクトファイルは、だけではなく、(V1バージョンです)、ファイルシステムの(V2版です)GACからのバージョンをロードするためにそれを強制的に編集
デレク永久

これにより、アプリがサーバーにデプロイされたときに、アセンブリが見つからない可能性があるため、問題が発生する可能性があります。
marsze

9

64ビットの場合-C:\ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell ** 3.0 **

バージョンは異なる場合があります


2

私はVS Project Referenceメニューを使用して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を使用してこれを修正しました。Install-Packageを実行するときは、パッケージマネージャーコンソールで正しい「デフォルトプロジェクト」を選択してください。
user3523091 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.