Detect and Reference different DLL versions-Collection of common programming errors

Little background. Working at a company that is transitioning to hosted only, but we have some customer that aren’t. We only support maintenance of non-hosted customers. Anyway, we are taking advantage of our hosted environment and one of our core DLL files is changing. 

We’d prefer not to have two different versions of all of our projects, one for hosted and one for not, only because DLLs are changing. Is there a way in .NET to detect different DLL versions and then use delegates to manage the slight difference in code?

Typically, when a new DLL is released, we  go in an recompile our projects against the new DLL, even though we almost never need to make any code changes.

Thanks

P.S. C# is preferred in case someone supplies code, but obviously not a huge deal.