DLLs compiled for .NET 4.6 use several APIs that have not been available in .NET 4.0 (such as await/async infrastructure). If they end up being used by an app compiled for .NET 4.0, they would work fine when running on .NET 4.6 or higher. However, when running on .NET 4.0-4.5.2, they would fail due to missing APIs.