2010-06-20 15 views
37

का उपयोग कर .NET असेंबली का संदर्भ कैसे दें मैं एक सी # .NET डेवलपर/आर्किटेक्ट हूं और समझता हूं कि यह ऑब्जेक्ट्स (.NET ऑब्जेक्ट्स) का उपयोग करता है और न केवल स्ट्रीम/टेक्स्ट।PowerShell

मैं अपने .NET (सी # लाइब्रेरी) असेंबली पर विधियों को कॉल करने के लिए PowerShell का उपयोग करने में सक्षम होना चाहता हूं।

मैं PowerShell में किसी असेंबली का संदर्भ कैसे दूंगा और असेंबली का उपयोग कैसे करूं?

उदाहरण के लिए, एक सरल गणित पुस्तकालय:

उत्तर

41

ब्लॉग पोस्ट Load a Custom DLL from PowerShell पर एक नजर डालें। यह एक स्थिर योग विधि, और एक उदाहरण उत्पाद विधि है:

namespace MyMathLib 
{ 
    public class Methods 
    { 
     public Methods() 
     { 
     } 

     public static int Sum(int a, int b) 
     { 
      return a + b; 
     } 

     public int Product(int a, int b) 
     { 
      return a * b; 
     } 
    } 
} 

संकलित करें और PowerShell में चलाएँ:

> [Reflection.Assembly]::LoadFile("c:\temp\MyMathLib.dll") 
> [MyMathLib.Methods]::Sum(10, 2) 

> $mathInstance = new-object MyMathLib.Methods 
> $mathInstance.Product(10, 2) 
+0

लिंक लोड नहीं है ... – Russell

+1

लिंक यहां लोड कर रहा है। मैं अपनी पोस्ट अपडेट हो जाएगा और इसे से प्रासंगिक हिस्सा कॉपी। –

+0

पाठ के लिए धन्यवाद। :) अब मुझे पता है कि जब मैं खोज रहा था तो मुझे जवाब क्यों नहीं मिला। मैं कोशिश करूँगा और आपको बताऊंगा कि मैं कैसे जाता हूं। :) – Russell

43

PowerShell 2.0 के साथ, आप ऐड-प्रकार Cmdlet में बनाया का उपयोग कर सकते हैं।

आपको बस डीएल के पथ को निर्दिष्ट करने की आवश्यकता होगी।

Add-Type -Path foo.dll 

इसके अलावा, आप ऐडलाइन के साथ इनलाइन सी # या वीबी.नेट का उपयोग कर सकते हैं। @ "वाक्य रचना एक यहाँ स्ट्रिंग है।

C:\PS>$source = @" 
    public class BasicTest 
    { 
     public static int Add(int a, int b) 
     { 
      return (a + b); 
     } 

     public int Multiply(int a, int b) 
     { 
      return (a * b); 
     } 
    } 
    "@ 

    C:\PS> Add-Type -TypeDefinition $source 

    C:\PS> [BasicTest]::Add(4, 3) 

    C:\PS> $basicTestObject = New-Object BasicTest 
    C:\PS> $basicTestObject.Multiply(5, 2) 
+0

वाह !! .. यह अविश्वसनीय था, अगर हम कंसोल में केवल इंटेलिजेंस कर सकते हैं तो यह और भी शक्तिशाली होगा – mjsr

+1

विजुअल स्टूडियो में उस पावरशेल के लिए कुछ विकल्प: http://powerguivsx.codeplex.com/ PowerShell Plus: IDE http://powershellplus.com/ –

+2

नवीनतम आईएसई में इंटेलिजेंस है। – MDMoore313