2010-02-21 16 views
6

J'ai précédemment demandé, How to determine the target of a symbolic link or Reparse Point? ... et obtenu an answer that suggested the use of the Win32 function GetFinalPathNameByHandle, une fonction disponible d'abord sur Vista. Que se passe-t-il si je compile l'assembly .NET et que j'essaie de l'exécuter sur WinXP ou WS2003, qui n'a pas la fonction GetFinalPathNameByHandle? Y a-t-il une exception d'exécution, et si oui, laquelle? Y a-t-il un moyen pour moi de gérer ce cas dans le code de l'application?Que se passe-t-il lorsque je DllImport une fonction qui n'est pas disponible sur la plate-forme d'exécution?

Répondre

7

Vous obtiendrez un EntryPointNotFoundException lorsque vous appelez la méthode.

Si le fichier DLL entier n'existe pas, vous obtiendrez un DllNotFoundException à la place.

+0

Et ces exceptions sont normales, attrapables? – Cheeso

+1

Oui. Qu'est-ce qui vous fait penser qu'ils ne seraient pas? – user200783

+0

L'utilisation de LoadLibrary, GetProcAddress, FreeLibrary peut éviter l'exception. Je ne sais pas si cela a du sens si vous ne pouvez pas supporter la fonctionnalité de toute façon. –