How do I check if a library (dll) is available at runtime before I call it?
The AppDomain.AssemblyLoad and AppDomain.AssemblyResolve events occur on load and load failure, respectively. If you handle these events you can determine which assemblies loaded and which failed.
You can use System.IO.File.Exists to check for the file if you know where it's located.
You can use System.Reflection.Assembly.LoadFrom to load it.
You'll need to use reflection to call methods in the dll if you use this form of late binding.