Referensi system.management.automation.dll di Visual Studio

131

Saya mulai melihat ke dalam model PowerShell dan pengembangan snap-in. Hal pertama yang saya perhatikan adalah referensi System.management.automation.dll. Namun dalam Visual Studio, tab .NET tidak memiliki perakitan itu, dan juga tidak satu pun dapat menelusuri

C:\windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

untuk membuat referensi berbasis file.

Apakah saya dipaksa untuk menyalin file secara manual untuk membuat referensi yang mudah ?

icelava
sumber
Bisakah Anda mempertimbangkan untuk mengubah jawaban yang diterima untuk yang ini? Pendekatan paket NuGet tampaknya yang paling mudah dan kuat.
julealgon

Jawaban:

165

System.Management. Informasi tentang Nuget

System.Management.Automation.dll pada NuGet , paket yang lebih baru dari 2015, tidak terdaftar sebagai yang sebelumnya!

Paket tim Microsoft PowerShell di luar NuGet

Pembaruan: paket sekarang dimiliki oleh Tim PowerShell. Sabas!

skfd
sumber
2
Ini layak lebih banyak
foobarcode
5
Saya berharap Microsoft mengambil kepemilikan Nuget ini karena mereka begitu lembap dengan keterbukaan hari ini.
skfd
@skfd Microsoft sudah cukup banyak memiliki Nuget .. Orang-orang di belakangnya menggunakan email microsoft.com dan NuGet sendiri adalah bagian dari Microsoft .NET Foundation ( dotnetfoundation.org )
Michael Bisbjerg
1
@MichaelBisbjerg, saya pikir dia kebanyakan merujuk pada paket NuGet spesifik ini. Jika itu milik Microsoft, maka (di dunia yang ideal) mereka akan bertanggung jawab untuk menjaganya tetap diperbarui, merilis paket baru, dll.
Ben Randall
terakhir diperbarui 29/03/2013 "Pemilik telah membatalkan pendaftaran paket ini. Ini bisa berarti bahwa paket tersebut sudah usang atau tidak boleh digunakan lagi."
juFo
97

Salinan System.Management.Automation.dll diinstal ketika Anda menginstal windows SDK (yang cocok, versi terbaru, bagaimanapun). Itu harus di C: \ Program Files \ Assemblies Referensi \ Microsoft \ WindowsPowerShell \ v1.0 \

tomasr
sumber
2
Saya telah menginstal SDK pada 2 mesin 64-bit yang berbeda (dengan kesulitan) dan menemukan versi 6.2.8229.0, 4.66MB dll hanya pada 1, dan hanya di c: \ program file (x86) \ rakitan rakitan \ microsoft \ windowspowershell \ v1.0. Saya sangat merekomendasikan untuk mengedit file .csproj, atau memeriksa DLL yang tepat untuk kontrol sumber dan merujuknya. Instalasi SDK terlalu tidak fleksibel.
James McLachlan
@ ashes999 PowerShell 2.0 sebenarnya berjalan pada 1.0 DLL.
kravits88
3
2014.07.11 tentang x64 dalam C: \ Program Files (x86) \ Assemblies Referensi \ Microsoft \ WindowsPowerShell \ 3.0 \ System.Management.Automation.dll
Christopher G. Lewis
Saya tidak tahu tentang SDK, tetapi saya tahu bahwa WMF 3.0 tidak menginstalnya ke C: \ Program Files (x86) \ Assemblies Referensi \ Microsoft \ WindowsPowerShell \ 3.0. Saya ingin menginstal PowerShell 3.0 pada Windows 7 SP1 yang memiliki versi 1.0 terletak di C: \ Program Files (x86) \ Assemblies Referensi \ Microsoft \ WindowsPowerShell \ 1.0 dan saya menggunakan Windows6.1-KB2506143-x64.msi dari microsoft .com / en-us / download / details.aspx? id = 34595 dan berhasil dijalankan. Namun itu menciptakan * .dll hanya di C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ System.Management.Automation / v4.0_3.0.0.0__31bf3856ad364e35.
Alexander Samoylov
Ini adalah * .dll yang tepat, karena perintah "powershell.exe -versi 3.0" berhenti berfungsi jika saya memindahkan * .dll. Ukuran * .dll berbeda dari yang ada secara default pada mesin Windows 10 lain di C: \ Program Files (x86) \ Assemblies Referensi \ Microsoft \ WindowsPowerShell \ 3.0. Saya dapat membuat folder C: \ Program Files (x86) \ Assemblies Referensi \ Microsoft \ WindowsPowerShell \ 3.0 pada mesin Windows 7 SP1 dan meletakkan * .dll dari C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ System. Management.Automation / v4.0_3.0.0.0__31bf3856ad364e35, tetapi pertanyaannya adalah, bagaimana cara menginstalnya dengan benar.
Alexander Samoylov
85

Jika Anda tidak ingin menginstal Windows SDK, Anda bisa mendapatkan dll dengan menjalankan perintah berikut di PowerShell:

Copy ([PSObject].Assembly.Location) C:\
kravits88
sumber
8
Nah, itu brilian!
8DH
2
Sangat manis. Tidak akan memikirkan itu.
Marius
Terima kasih untuk ini. Paket NuGet tidak akan berfungsi untuk saya dalam aplikasi konsol .NET 4.5.2 yang benar-benar baru. Itu "menginstal" paket, tetapi menolak untuk menambahkan referensi. Saya akhirnya berhenti berkelahi dengan NuGet dan menggunakan jawaban Anda untuk menambahkan referensi secara manual. Terima kasih!
Lews Therin
77

Saya tidak bisa menginstal SDK dengan benar (beberapa file sepertinya tidak ditandatangani, kira-kira seperti itu). Saya menemukan solusi lain di sini dan itu tampaknya berfungsi baik untuk saya. Tidak memerlukan instalasi file baru sama sekali. Pada dasarnya, yang Anda lakukan adalah:

Edit file .csproj dalam editor teks, dan tambahkan:

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

ke bagian yang relevan.

Semoga ini membantu.

JP.
sumber
1
Rasanya aneh bagi saya bahwa kita harus melakukan ini secara manual (mengedit file .csproj) tetapi berhasil bagi saya.
kd7iwp
Mengedit file proyek hanya memaksanya memuat versi dari GAC (yang merupakan versi V2) alih-alih sistem file (yang merupakan versi V1)
Derek Evermore
Ini dapat menyebabkan masalah ketika aplikasi dikerahkan ke server karena perakitan mungkin tidak ditemukan di sana.
marsze
9

jika 64bit - C: \ Program Files (x86) \ Assemblies Referensi \ Microsoft \ WindowsPowerShell ** 3.0 **

dan versinya bisa berbeda

Pradeep
sumber
2

Saya menggunakan menu Referensi Proyek VS dan melihat-lihat: C: \ windows \ assembly \ GAC_MSIL \ System.Management.Automation dan menambahkan referensi untuk dll dan Runspaces dll.

Saya tidak perlu meretas file .csprj dan menambahkan baris referensi yang disebutkan di atas. Saya tidak menginstal Windows SDK.

Saya memang melakukan salinan Powershell yang disebutkan di atas: Salin ([PSObject] .Assembly.Location) C: \

Tes saya dengan perintah Get-Process Powershell kemudian bekerja. Saya menggunakan contoh-contoh dari Powershell untuk pengembang Bab 5.

dpminusa
sumber
1

Perakitan datang dengan Powershell SDK (C: \ Program Files \ Assemblies Referensi \ Microsoft \ WindowsPowerShell \ v1.0) tidak datang dengan Powershell 2 tipe spesifik.

Mengedit file csproj secara manual memecahkan masalah saya.

Radu
sumber
0

Anda juga dapat menggunakan nuget: https://www.nuget.org/packages/System.Management.Automation/ Ini mungkin opsi yang lebih baik.

SEKARANG
sumber
Saya punya masalah bahwa DLL yang benar direferensikan dalam proyek, tetapi membangun kembali memberikan kesalahan bahwa paket Otomasi tidak ditemukan. Menggunakan Nuget memperbaiki ini. Pastikan Anda memilih "proyek Default" yang tepat di Package Manager Console ketika menjalankan Install-Package.
user3523091