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

Enable Trace on Dynamcis 365 on premise using PowerShell

Enable trace settings through Windows PowerShell Note These changes made in Windows PowerShell do not update the Registry. These changes update the DeploymentProperties and ServerSettingsProperties tables in the MSCRM_CONFIG database. Register the cmdlets 1.      Log in to the administrator account on your Microsoft Dynamics CRM server. 2.      In a Windows PowerShell window, type the following command: Add-PSSnapin Microsoft.Crm.PowerShell To obtain a list of the current settings, type the following command: Get-CrmSetting TraceSettings Set the trace settings 1.      Type the following command: $setting = Get-CrmSetting TraceSettings 2.      Type the following command to enable tracing: $setting.Enabled=$True 3.      Type the following command to set the trace settings: Set-CrmSetting $setting 4.      Type the following command...

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" ) ) {   ...