быстрый вопрос. Я хочу узнать, присутствует ли DLL в системе, где мое приложение выполняется.
Действительно ли это возможно в C#? (способом, который работал бы над ВСЕМ Windows OS?)
Для DLL я имею в виду классика non-.NET dll (Win32 dll)
(В основном я хочу осуществить проверку вызвать, я использую DLL, который может или не может присутствовать в пользовательской системе, но я не хочу, чтобы приложение отказало, не предупреждая, когда это не присутствует :P)
Вызов функции API LoadLibrary
:
[DllImport("kernel32", SetLastError=true)]
static extern IntPtr LoadLibrary(string lpFileName);
static bool CheckLibrary(string fileName) {
return LoadLibrary(fileName) == IntPtr.Zero;
}
Вызов LoadLibrary.
http://msdn.microsoft.com/en-us/library/ms684175 (VS.85) .aspx
Я предполагаю, что это вызов PInvoke?
Если так, то самый простой способ заставить его определить наличие файла - это сделать вызов и поймать исключение, которое возникнет, если файл не существует.
[DllImport("some.dll")]
private static void SomeMethod();
public static void SomeMethodWrapper() {
try {
SomeMethod();
} catch (FileNotFoundException) {
// Do Nothing
}
}