2009-12-08 25 views
9

Tôi có lỗi xây dựng trong một chương trình sắc nét c mà tôi đang biên dịch trong Visual Studio 2008 trên Windows Server (2008, tôi đoán) SP 2 64-BIT OS. Nó nói rằng 'System.Management.Automation.PSObject' được định nghĩa trong một assembly không được tham chiếu. Tôi đã thực hiện một số tìm kiếm trong MSDN và tôi thấy rằng điều này có vẻ là một phần của Windows Power Shell SDK. http://msdn.microsoft.com/en-us/library/system.management.automation.psobject(VS.85).aspxWindows Powershell SDK và System.Management.Automation.PSObject

Vấn đề là tôi đã có Windows Powershell. Nếu đây là tất cả những gì tôi cần, làm thế nào để tôi sử dụng nó hoặc tham khảo nó trong IDE C Sharp. Nếu tôi cần phải tải về một cái gì đó thêm (tức là SDK), nơi nào tôi đi để làm điều này và cài đặt nó? Tôi không thể tìm thấy bất cứ điều gì trực tuyến.

Trả lời

14

Tìm trong C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0 cho System.Management.Automation.dll và nếu nó tồn tại, hãy thêm nó làm tham chiếu trong dự án C# của bạn. Nếu nó không tồn tại, sau đó tải về Windows SDK mà sẽ đặt các tập tin ở vị trí trên.

+0

Ngọt ngào. Cảm ơn. Điều đó đã hiệu quả. – xarzu

+0

Lấy từ NuGet thay thế. – pkr298

34

Nếu bạn không thể tìm thấy ở đó, hãy nhập điều này tại dấu nhắc PowerShell.

Copy ([PSObject].Assembly.Location) ~/Desktop 
+1

+1. Đẹp nhất :-) – Joey

+0

Mẹo hay quá. Cảm ơn. – xarzu

+0

cảm ơn! thực sự đã giúp vì phiên bản x86 không thực sự hoạt động: p – chikuba

13

Để tham chiếu chính xác PowerShell, bạn nên tham khảo PowerShell bên trong GAC. PowerShell đi kèm với Vista SDK là PowerShell V1.0 và kỹ thuật này sẽ tham chiếu 1.0, 2.0 hoặc X.0, bất kỳ cài đặt nào được cài đặt. Tham chiếu đến việc lắp ráp SDK cũng sẽ không tạo ra các dự án di động nhiều nhất, bởi vì bạn phải cài đặt SDK để xây dựng dự án, thay vì chỉ Visual Studio và Windows.

Thật không may, việc tham chiếu các mục GAC không phải là giao diện người dùng trực quan của studio làm sạch, vì vậy bạn phải chỉnh sửa thủ công tệp CSProj. Tìm phần có phần tử và thêm phần tử tham chiếu này.

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

Điều này sẽ tham khảo System.Management mới nhất được cài đặt trên hệ thống, bất kể phiên bản đó là gì.

Hy vọng điều này sẽ giúp

+1

Hmm, đó là sự hiểu biết của tôi rằng GAC là để truy cập thời gian chạy vào các hội đồng và để biên dịch, bạn nên đặt các hội đồng của bạn ở một vị trí khác có thể dễ dàng được tham chiếu từ Visual Studio, ví dụ: "$ env: ProgramFiles \ Tham chiếu Assemblies". –

+0

Nó thực sự không quan trọng mà bạn tham khảo. Tên mạnh sẽ khớp và chính sách của nhà xuất bản sẽ chuyển hướng đến phiên bản chính xác trong GAC bất kể bạn tham chiếu đến đâu từ đó. Một trong GAC chỉ là một phương sách cuối cùng để có được một hội đồng cập nhật để tham khảo. Với SharePoint chẳng hạn, đó là cách duy nhất để giải nén các assembly cho một os client để xây dựng. – Josh

+1

Cũng đúng là trường hợp bạn tham chiếu ở một vị trí cũng đi kèm với tệp nhận xét tài liệu XML cung cấp thêm thông tin Intellisense. Không chắc chắn nếu đó vẫn là trường hợp ngày hôm nay. –

Các vấn đề liên quan