Skip to main content

PowerShell: Get Actual Error

I was having hard time to find the reason why I was not able to find a custom method in a .Net DLL.

Find your Assembly:


PS C:\vstsagent\A1\_work\r1\a\_DevOps_CI\Scripts> [appdomain]::currentdomain.getassemblies() | Where-Object FullName -Match "MyAssembly"



GAC    Version        Location

---    -------        --------

False  v4.0.30319     C:\vstsagent\A1\_work\r1\a\_DevOps_CI\Scripts\Tools\MyAssembly.dll



PS C:\vstsagent\A1\_work\r1\a\_DevOps_CI\Scripts> $a = [appdomain]::currentdomain.getassemblies() | Where-Object FullName -Match "MyAssembly"

PS C:\vstsagent\A1\_work\r1\a\_DevOps_CI\Scripts> $a



GAC    Version        Location

---    -------        --------

False  v4.0.30319     C:\vstsagent\A1\_work\r1\a\_DevOps_CI\Scripts\Tools\MyAssembly.dll


When I was trying to get the Types in the assembly, I was getting the exception:


PS C:\vstsagent\A1\_work\r1\a\_DevOps_CI\Scripts> $a.GetTypes()
Exception calling "GetTypes" with "0" argument(s): "Unable to load one or more of the requested types. Retrieve the
LoaderExceptions property for more information."
At line:1 char:1
+ $a.GetTypes()
+ ~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ReflectionTypeLoadException

I tried to get the actual exception, but I was not able to get it. Then I found following code which displayed the actual exception:


PS C:\vstsagent\A1\_work\r1\a\_DevOps_CI\Scripts> $x = $Error[0]
>> $x.Exception.GetBaseException().LoaderExceptions

Could not load file or assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or
one of its dependencies. The system cannot find the file specified.
Could not load file or assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or
one of its dependencies. The system cannot find the file specified.
Could not load file or assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or
one of its dependencies. The system cannot find the file specified.


Comments

Popular posts from this blog

Notepad++ Error for 64bit - ShellExecute failed (2): Is this command correct?

Cause : It happens when you set Notepad++ to "run as" administrator on Windows 7. Fix:  To fix this, you need to manually edit the registry of your system to create a new option in pop-up menu to open files with Notepad++ Step 1 : Delete existing  Edit with Notepad++  entry from registry Go into your registry as an administrator (Run -> regedit) and search for notepad++.exe. Find the key under  HKEY_CLASSES_ROOT  that has an entry with the  Edit with Notepad++  (or maybe  Edit with &Notepad++ ) and delete the entire key. Right click and you should see that you no longer have that option. Step 2 : Create new entry Open with Notepad++ Go to: HKEY_CLASSES_ROOT\*\shell Create a new key under shell called  OpenWithNotepad  and create a subkey under that called  command . In the  OpenWithNotepad  key the default string is what you want the context menu item to be called. I set it to  Open with Not...

Check and Create a Node in XML, if it does not existing using PowerShell

Here is a quick code snippet to Add a Node in XML from from the XPath, the following PowerShell function will search for the node hierarchy, if it does not exist then it will create it. function   CheckForXMLNode  {      param  (          $File , # File Path of XML to search the node          $NodePath     )      $nodes  =  $NodePath  -split  "/"      $path  =  "//Configuration"      # My Sample Node Path is like this # //Configuration/Farm/CustomParent/CustomChild      foreach  ( $node   in   $nodes ) {          if  ( ( $node  -ne  "" ) -and ( $node  -ne  "Configuration" ) ) {   ...