Nei costruttori statici c # per una classe non vengono eseguiti finché non si utilizza la classe per la prima volta. Quindi, se vuoi prendere DllNotFoundException devi farlo la prima volta che la classe viene utilizzata. Il modo più comodo per farlo è probabilmente incapsulare il puntatore della funzione esterna all'interno di una classe nidificata (temporanea), in questo modo, quindi la DLL esterna non viene caricata finché non viene effettuata la chiamata specifica:
public class MyOuterClass
{
class ExternalDllSubClass
{
[DllImport("BananaquitFluffernutterOrWhatever.dll")]
private static extern void print_line(string str);
internal static void PrintLine (string str) {
print_line(str);
}
}
public void PrintLine(string str)
{
try
{
ExternalDllSubClass.PrintLine(str);
}
catch (DllNotFoundException e)
{
Debug.WriteLine(e.ToString());
}
}
Quindi imposta una pausa all'inizio della funzione esterna. (Oppure cattura l'eccezione DllNotFoundException in Visual Studio usando l'assistente delle eccezioni.)
Per ulteriori informazioni, consulta qui .