Tham khảo system.man Quản lý.automation.dll trong Visual Studio


131

Tôi đang bắt đầu xem xét mô hình PowerShell và phát triển snap-in. Điều đầu tiên tôi nhận thấy là tham khảo System.man Quản lý.automation.dll. Tuy nhiên, trong Visual Studio, tab .NET không có hội đồng đó và cũng không thể duyệt qua

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

để làm một tài liệu tham khảo dựa trên tập tin.

Tôi có bị buộc phải sao chép tệp ra bằng tay để làm một tài liệu tham khảo dễ dàng không?


Bạn có thể xem xét thay đổi câu trả lời được chấp nhận cho câu trả lời này? Cách tiếp cận gói NuGet dường như là đơn giản và mạnh mẽ nhất.
julealgon

Câu trả lời:


165

Hệ thống .Quản lý. Tự động trên Nuget

System.Man Quản lý.Automation.dll trên NuGet , gói mới hơn từ năm 2015, không được liệt kê như gói trước!

Gói Microsoft PowerShell un NuGet

Cập nhật: gói hiện thuộc sở hữu của PowerShell Team. Huzzah!


2
Điều này xứng đáng được tăng thêm
foobarcode 10/2/2015

5
Tôi ước gì Microsoft nắm quyền sở hữu Nuget này vì họ rất cởi mở với những ngày này.
skfd

@skfd Microsoft khá nhiều sở hữu NuGet đã .. Những người đằng sau nó sử dụng microsoft.com email và NuGet chính nó là một phần của Microsofts .NET Foundation ( dotnetfoundation.org )
Michael Bisbjerg

1
@MichaelBisbjerg, tôi nghĩ rằng ông chủ yếu đề cập đến gói NuGet cụ thể này. Nếu đó là sở hữu của Microsoft, thì (trong một thế giới lý tưởng), họ sẽ chịu trách nhiệm cập nhật, phát hành các gói mới, v.v.
Ben Randall

cập nhật lần cuối 29/03/2013 "Chủ sở hữu đã hủy niêm yết gói này. Điều này có thể có nghĩa là gói đó không được dùng nữa hoặc không nên sử dụng nữa."
juFo

97

Một bản sao của System.Man Quản lý.Automation.dll được cài đặt khi bạn cài đặt SDK Windows (một phiên bản phù hợp, gần đây của nó, dù sao đi nữa). Nó phải ở trong C: \ Chương trình tập tin \ Tập hợp tham khảo \ Microsoft \ WindowsPowerShell \ v1.0 \


2
Tôi đã cài đặt SDK trên 2 máy 64 bit khác nhau (gặp khó khăn) và tìm thấy phiên bản 6.2.8229.0, 4.66 MB dll chỉ trên 1 và chỉ trong các tập tin c: \ chương trình (x86) \ tham chiếu \ microsoft \ windowspowershell \ v1.0. Tôi đặc biệt khuyên bạn nên chỉnh sửa tệp .csproj hoặc kiểm tra đúng DLL để kiểm soát nguồn và tham chiếu nó. Việc cài đặt SDK quá không linh hoạt.
James McLachlan

@ ashes999 PowerShell 2.0 thực sự chạy trên DLL 1.0.
kravits88

3
2014/07/11 trên x64, nó có trong C: \ Program Files (x86) \ Tham chiếu hội thảo \ Microsoft \ WindowsPowerShell \ 3.0 \ System.Man Quản lý.Automation.dll
Christopher G. Lewis

Tôi không biết về SDK, nhưng tôi biết rằng WMF 3.0 không cài đặt nó vào C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 3.0. Tôi muốn cài đặt PowerShell 3.0 trên Windows 7 SP1 có phiên bản 1.0 nằm trong C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 1.0 và tôi đã sử dụng Windows6.1-KB2506143-x64.msi từ microsoft .com / en-us / download / chi tiết.aspx? id = 34595 và nó chạy thành công. Tuy nhiên, nó đã tạo * * chỉ trong C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ System.Man Quản lý.Automation / v4.0_3.0.0.0__31bf3856ad364e35.
Alexander Samoylov

Đó là một * * thích hợp, bởi vì lệnh "powershell.exe -version 3.0" sẽ ngừng hoạt động nếu tôi di chuyển *. Kích thước của *. Tôi có thể tạo thư mục C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 3.0 trên máy Windows 7 SP1 và đặt * * từ C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ System. Quản lý.Automation / v4.0_3.0.0.0__31bf3856ad364e35, nhưng câu hỏi là, làm thế nào để cài đặt nó đúng cách.
Alexander Samoylov

85

Nếu bạn không muốn cài đặt Windows SDK, bạn có thể lấy dll bằng cách chạy lệnh sau trong powershell:

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

8
Bây giờ thì thật tuyệt!
8DH

2
Rất ngọt. Sẽ không nghĩ về điều đó.
Marius

Cảm ơn vì điều đó. Gói NuGet sẽ không hoạt động với tôi trong một ứng dụng bảng điều khiển .NET 4.5.2 hoàn toàn mới. Nó "cài đặt" gói, nhưng nó từ chối thêm tham chiếu. Cuối cùng tôi đã ngừng chiến đấu với NuGet và sử dụng câu trả lời của bạn để thêm tài liệu tham khảo theo cách thủ công. Cảm ơn!
Lews Therin

77

Tôi không thể cài đặt SDK để cài đặt đúng cách (một số tệp dường như không được ký, đại loại như vậy). Tôi tìm thấy một giải pháp khác ở đây và điều đó dường như hoạt động tốt với tôi. Nó không yêu cầu cài đặt các tập tin mới. Về cơ bản, những gì bạn làm là:

Chỉnh sửa tệp .csproj trong trình soạn thảo văn bản và thêm:

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

đến phần có liên quan.

Hi vọng điêu nay co ich.


1
Nó có vẻ kỳ lạ với tôi rằng chúng tôi phải làm điều này bằng tay (chỉnh sửa tệp .csproj) nhưng nó đã làm việc cho tôi.
kd7iwp

Chỉnh sửa tệp dự án chỉ buộc nó tải phiên bản từ GAC (là phiên bản V2) thay vì hệ thống tệp (là phiên bản V1)
Derek Evermore

Điều này có thể dẫn đến các vấn đề khi ứng dụng được triển khai đến máy chủ vì có thể không tìm thấy lắp ráp ở đó.
soái ca

9

nếu là 64 bit chúng - C: \ Program Files (x86) \ Tham chiếu hội thảo \ Microsoft \ WindowsPowerShell ** 3.0 **

và phiên bản có thể khác


2

Tôi đã sử dụng menu Tham chiếu dự án VS và duyệt đến: C: \ windows \ assembly \ GAC_MSIL \ System.Man Quản lý. Tự động và thêm một tham chiếu cho dll và Runspaces dll.

Tôi không cần hack tệp .csprj và thêm dòng tham chiếu được đề cập ở trên. Tôi chưa cài đặt Windows SDK.

Tôi đã thực hiện bản sao Powershell đã đề cập ở trên: Sao chép ([PSObject] .Assugging.Location) C: \

Thử nghiệm của tôi với lệnh Powershell Get-Process sau đó đã hoạt động. Tôi đã sử dụng các ví dụ từ Powershell cho các nhà phát triển Chương 5.


1

Việc lắp ráp với Powershell SDK (C: \ Chương trình tập tin \ Tập hợp tham khảo \ Microsoft \ WindowsPowerShell \ v1.0) không đi kèm với các loại cụ thể của Powershell 2.

Chỉnh sửa thủ công tệp csproj đã giải quyết vấn đề của tôi.


0

Bạn cũng có thể sử dụng nuget: https://www.nuget.org/packages/System.Man Quản lý.Automation / Đây có thể là một lựa chọn tốt hơn.


Tôi gặp vấn đề là DLL chính xác được tham chiếu trong dự án, nhưng việc xây dựng lại đã báo lỗi rằng gói Tự động hóa không được tìm thấy. Sử dụng Nuget đã sửa lỗi này. Đảm bảo bạn chọn đúng "Dự án mặc định" trong Bảng điều khiển quản lý gói khi chạy Cài đặt gói.
dùng3523091
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.