As you might know Odbc is a standardized database interface. For it to work it needs a driver specific to the actual database engine.
A specific problem I know about is the access odbc engine. The JET driver used to be common, but it is 32 bit only. A replacement is the ACE driver, that exists in both x64 and x86 variants. This needs to be installed on the system using the redistributable, as far as I know there is no legal way to just include the dll files in the application. It is also included in office installations ( at least the variant I used at the time ), but office uses x86 variants of all components by default, you need to explicitly select x64 during installation.
I think you can install the x64 redistributable ace driver side by side of a office x86 installation, but my memory might be faulty.
I have no idea if there are similar problems with the oracle driver. I would suspect the issue is simpler with the MSSQL driver since 64-bit operation has been standard for a much longer time.
.Net will resolve most dependencies on demand, typically this would be done when the first piece of code that uses the dependency is compiled, i.e. before the first time it is run. A way to check what driver is causing you issues would be to check where the exception occurs, i.e. what kind of database did it try to use.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…