আমার কাছে .NET সমাবেশ (একটি dll) আছে যা আমরা এখানে ব্যবহার করি এমন ব্যাকআপ সফ্টওয়্যারের একটি API। এটিতে আমার পাওয়ারশেল স্ক্রিপ্ট (গুলি) এর সুবিধা নিতে চাই এমন কয়েকটি বৈশিষ্ট্য এবং পদ্ধতি রয়েছে। যাইহোক, আমি প্রথম সমাবেশটি লোড করে অনেকগুলি বিষয় নিয়ে চলেছি, তারপরে সমাবেশটি লোড হয়ে গেলে কোনও ধরণের ব্যবহার করে using
সম্পূর্ণ ফাইল পাথটি হ'ল:
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 একই cmdlet ব্যবহার সমাবেশ, DotNetZip , যা সাইটে একই কার্যকারিতা ব্যবহারের উদাহরণ আছে আমার জন্য কাজ করে না।
আমি শেষ পর্যন্ত দেখতে পাচ্ছি যে আমি প্রতিবিম্বটি ব্যবহার করে অ্যাসেম্বলি লোড করতে আপাতদৃষ্টিতে সক্ষম হয়েছি:
[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
কোন গাইড প্রশংসা !!