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 पैकेज दृष्टिकोण सबसे सरल और मजबूत लगता है।
जुलैलेगॉन

जवाबों:


165

सिस्टम.न्यूजमेंट.न्यूगेटेशन ऑन नुगेट

System.Management.Automation.dll NuGet पर , 2015 से नया पैकेज, पिछले एक के रूप में अनलिस्टेड नहीं!

Microsoft PowerShell टीम un NuGet को पैकेज करती है

अद्यतन: पैकेज अब PowerShell टीम के स्वामित्व में है। हुज़्ज़ाह!


2
यह अधिक योग्य है
फोबारकोड

5
काश माइक्रोसॉफ्ट इस Nuget का स्वामित्व ले लिया क्योंकि वे इस दिन खुलेपन के साथ डूब रहे हैं।
स्कैफ़ड

@skfd Microsoft बहुत पहले से ही Nuget का मालिक है। इसके पीछे के लोग microsoft.com ईमेल का उपयोग करते हैं और NuGet खुद Microsofts .NET फाउंडेशन ( dotnetfoundation.org ) का एक हिस्सा है
माइकल बिस्बर्ज

1
@MichaelBisbjerg, मुझे लगता है कि वह ज्यादातर इस विशिष्ट NuGet पैकेज का जिक्र कर रहा था। यदि यह Microsoft के स्वामित्व में था, तो (एक आदर्श दुनिया में) वे इसे अद्यतन रखने, नए पैकेज जारी करने आदि के लिए जिम्मेदार होंगे
बेन रान्डेल

अंतिम अद्यतन 29/03/2013 "मालिक ने इस पैकेज को अनलिस्ट किया है। इसका मतलब यह हो सकता है कि पैकेज को हटा दिया गया है या अब इसका उपयोग नहीं किया जाना चाहिए।"
जूफ

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 files (x86) \ reference विधानसभाओं \ microsoft \ windows \ _ \ v1.0। मैं अत्यधिक .csproj फ़ाइल को संपादित करने, या सही DLL में स्रोत नियंत्रण और इसे संदर्भित करने के लिए जाँच करने की सलाह देता हूँ। SDK इंस्टाल बस बहुत अधिक अनम्य है।
जेम्स मैक्लैक्लन

@ ashes999 PowerShell 2.0 वास्तव में 1.0 DLL पर चलता है।
kravits88

3
2014.07.11 को C64 में इसकी C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 3.0 \ System.Management.Automation.dll
क्रिस्टोफर जी। लुईस

मैं SDK के बारे में नहीं जानता, लेकिन मुझे पता है कि WMF 3.0 इसे C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 3.0 में इंस्टॉल नहीं करता है । मैं Windows 7 SP1 पर PowerShell 3.0 को स्थापित करना चाहता था, जिसका संस्करण 1.0 C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 1.0 में स्थित था और मैंने Microsoft से Windows6.1-KB2506143-x64.msi का उपयोग किया था .com / en-us / download / details.aspx? id = 34595 और यह सफलतापूर्वक चलता है। हालाँकि इसने * .dll केवल C: \ Windows \ Microsoft.NET \ विधानसभा \ GAC_MSIL \ System.anagement.Automation / v4.0_3.0.0__31bf3856ad364e35 में बनाया।
अलेक्जेंडर समोयलोव

यह एक उचित *। Dll है, क्योंकि यदि मैं "ddll" को स्थानांतरित करता हूं तो कमांड "powershell.exe -version 3.0" काम करना बंद कर देता है। * .Dll का आकार उस से भिन्न होता है जो C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 3.0 में एक और विंडोज 10 मशीन पर डिफ़ॉल्ट रूप से मौजूद होता है। मैं Windows 7 SP1 मशीन पर फ़ोल्डर C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell \ 3.0 बना सकता हूं और वहां * .dll C: \ Windows \ Microsoft.NET \ विधानसभा \ GAC_DIL \ System से डाल सकता हूं। Management.Automation / v4.0_3.0.0.03131bf3856ad364e35, लेकिन सवाल यह है कि इसे ठीक से कैसे स्थापित किया जाए।
अलेक्जेंडर समोयलोव

85

यदि आप Windows SDK को स्थापित नहीं करना चाहते हैं, तो आप निम्नलिखित कमांड को पॉवरशेल में चलाकर डीएल प्राप्त कर सकते हैं:

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

8
अब यह शानदार है!
8DH

2
बहुत मीठा। ऐसा नहीं सोचा होगा।
मेरियस

इसके लिए धन्यवाद। NuGet पैकेज मेरे लिए बिलकुल नए .NET 4.5.2 कंसोल ऐप में काम नहीं करेगा। उसने पैकेज को "इंस्टॉल" कर दिया, लेकिन उसने संदर्भ जोड़ने से इनकार कर दिया। मैंने आखिरकार नूगेट से लड़ना बंद कर दिया और संदर्भ को मैन्युअल रूप से जोड़ने के लिए आपके उत्तर का उपयोग किया। धन्यवाद!
Lews थेरिन

77

मुझे ठीक से स्थापित करने के लिए एसडीके नहीं मिल सका (कुछ फाइलें अहस्ताक्षरित लग रही थीं, कुछ ऐसा ही)। मुझे यहां एक और समाधान मिला और यह मेरे लिए ठीक काम करता है। इसमें नई फ़ाइलों की स्थापना की आवश्यकता नहीं है। मूल रूप से, आप क्या करते हैं:

टेक्स्ट संपादक में .csproj फ़ाइल संपादित करें, और जोड़ें:

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

प्रासंगिक अनुभाग के लिए।

उम्मीद है की यह मदद करेगा।


1
यह मेरे लिए अजीब लगता है कि हमें इसे मैन्युअल रूप से करना होगा (.csproj फ़ाइल को संपादित करना), लेकिन यह मेरे लिए काम करता है।
kd7iwp

फ़ाइल सिस्टम के बजाय प्रोजेक्ट फ़ाइल को संपादित करना इसे GAC (जो V2 संस्करण है) से संस्करण को लोड करने के लिए मजबूर करता है (जो कि V1 संस्करण है)
Derek Evermore

यह समस्या तब हो सकती है जब एप्लिकेशन सर्वर पर तैनात हो, क्योंकि असेंबली वहां नहीं मिल सकती है।
मार्जेज़

9

यदि यह उन्हें 64 बिट है - C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ WindowsPowerShell + **

और संस्करण अलग हो सकता है


2

मैंने VS प्रोजेक्ट रेफरेंस मेनू का उपयोग किया और ब्राउज किया: C: \ windows \ विधानसभा \ GAC_MSIL \ System.anagement.Automation और dll और Runspaces dll के लिए एक संदर्भ जोड़ा।

मुझे .csprj फ़ाइल को हैक करने और ऊपर उल्लिखित संदर्भ लाइन जोड़ने की आवश्यकता नहीं थी। मेरे पास विंडोज एसडीके स्थापित नहीं है।

मैंने ऊपर उल्लिखित पॉवरशेल कॉपी की: कॉपी ([PSObject] .Assembly.Location) C: \

गेट-प्रोसेस पॉवरशेल कमांड के साथ मेरा परीक्षण तब काम किया। मैंने डेवलपर्स अध्याय 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.