Is it possible to catch the exception when a referenced .dll cannot be found?
For example, I have a C# project with a reference to a third-party dll; if that dll cannot be found, an exception is thrown. The exception is a System.IO.FileNotFoundException, but I am unable to determine where to catch it. The following code did not seem to work:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
try
{
// code goes here
}
catch (Exception exc)
{
MessageBox.Show(exc.ToString());
}
}
}
Extending Josh’s answer.
Assemblies in .Net are loaded on demand by the CLR. Typically an assembly load won’t be attempted until a method is JIT’d which uses a type from that assembly.
If you can’t catch the assembly load failure with a try/catch block in the main method, it’s likely beceause you’re using a type from the assembly within the try/catch. So the exception occurs before the main method is actually run.
Try putting all of the code from the main method in a different function. Then call that function within the try/catch block and you should see the exception.