मेरे पास .NET असेंबली (एक dll) है जो कि हमारे द्वारा उपयोग किए जाने वाले बैकअप सॉफ़्टवेयर के लिए एक एपीआई है। इसमें कुछ गुण और विधियाँ शामिल हैं जिन्हें मैं अपनी पॉवर्सशेल स्क्रिप्ट (ओं) का लाभ उठाना चाहूंगा। हालांकि, मैं पहले लोडिंग असेंबली के साथ बहुत सारे मुद्दों पर चल रहा हूं, फिर असेंबली लोड होने के बाद किसी भी प्रकार का उपयोग कर रहा हूं।
संपूर्ण फ़ाइल पथ है:
C:\rnd\CloudBerry.Backup.API.dll
शक्तियों में मैं का उपयोग करें:
$dllpath = "C:\rnd\CloudBerry.Backup.API.dll"
Add-Type -Path $dllpath
मुझे नीचे त्रुटि मिली:
Add-Type : Unable to load one or more of the requested types. Retrieve the
LoaderExceptions property for more information.
At line:1 char:9
+ Add-Type <<<< -Path $dllpath
+ CategoryInfo : NotSpecified: (:) [Add-Type], ReflectionTypeLoadException
+ FullyQualifiedErrorId : System.Reflection.ReflectionTypeLoadException,Microsoft.PowerShell.Commands.AddTypeComma
ndAdd-Type : Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
किसी अन्य .NET असेंबली, DotNetZip पर उसी cmdlet का उपयोग करना , जिसमें साइट पर समान कार्यक्षमता का उपयोग करने के उदाहरण भी मेरे लिए काम नहीं करते हैं।
मुझे अंततः पता चलता है कि मैं प्रतिबिंब का उपयोग करके विधानसभा को लोड करने में सक्षम हूं:
[System.Reflection.Assembly]::LoadFrom($dllpath)
यद्यपि मुझे यह तरीका लोड, लोडफ्रेम, या लोडफाइल के बीच के अंतर को नहीं समझता है, जो अंतिम विधि काम करती है।
हालाँकि, मैं अभी भी उदाहरण बनाने या वस्तुओं का उपयोग करने में असमर्थ प्रतीत होता हूं। जितनी बार मैं कोशिश करता हूं, मुझे ऐसी त्रुटियां मिलती हैं, जो बताती हैं कि पॉवर्सल किसी भी प्रकार के सार्वजनिक को खोजने में असमर्थ हैं।
मुझे पता है कि वहाँ कक्षाएं हैं:
$asm = [System.Reflection.Assembly]::LoadFrom($dllpath)
$cbbtypes = $asm.GetExportedTypes()
$cbbtypes | Get-Member -Static
---- अंश का प्रारंभ ----
TypeName: CloudBerryLab.Backup.API.BackupProvider
Name MemberType Definition
---- ---------- ----------
PlanChanged Event System.EventHandler`1[CloudBerryLab.Backup.API.Utils.ChangedEventArgs] PlanChanged(Sy...
PlanRemoved Event System.EventHandler`1[CloudBerryLab.Backup.API.Utils.PlanRemoveEventArgs] PlanRemoved...
CalculateFolderSize Method static long CalculateFolderSize()
Equals Method static bool Equals(System.Object objA, System.Object objB)
GetAccounts Method static CloudBerryLab.Backup.API.Account[], CloudBerry.Backup.API, Version=1.0.0.1, Cu...
GetBackupPlans Method static CloudBerryLab.Backup.API.BackupPlan[], CloudBerry.Backup.API, Version=1.0.0.1,...
ReferenceEquals Method static bool ReferenceEquals(System.Object objA, System.Object objB)
SetProfilePath Method static System.Void SetProfilePath(string profilePath)
---- अंश का अंत ----
स्थैतिक तरीकों का उपयोग करने की कोशिश विफल, मुझे नहीं पता क्यों !!!
[CloudBerryLab.Backup.API.BackupProvider]::GetAccounts()
Unable to find type [CloudBerryLab.Backup.API.BackupProvider]: make sure that the assembly containing this type is load
ed.
At line:1 char:42
+ [CloudBerryLab.Backup.API.BackupProvider] <<<< ::GetAccounts()
+ CategoryInfo : InvalidOperation: (CloudBerryLab.Backup.API.BackupProvider:String) [], RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
किसी भी मार्गदर्शन की सराहना की !!