我试图了解如何使用项目的 Target 框架以及它如何影响加载程序集。这是问题所在。
在 Visual Studio 2015 社区中,我的默认目标框架是 .NET 4.6.1。当保留此设置时,我使用 NuGet 将 Npgsql 3.0.7 作为驱动程序安装到本地后端 PostgreSQL 数据库。使用时
DbProviderFactories.GetFactory(ProviderName)
VS 报告找不到 Provider。(在 machine.config 和 GAC 中安装 Npgsql 3.0.7 之后。)
在研究这个(DbProviderFactories Demystified)时,声明是
DbProviderFactories 只需调用 Type.GetType 来加载 Assembly 并创建 Type 的实例。
这使我对 Npgsql 3.0.7 进行了更多研究。当 NuGet 安装程序集时,它将它放置在
C:...\packages\Npgsql.3.0.7\lib\net45\Npgsql.dll
以“net45”为.NET 4.5,我将项目的目标框架更改为.NET 4.5.2。重建后,一切运行良好,没有警告或错误。
那么“目标框架”如何影响 machine.config 和 GAC 的使用方式呢?
感谢您的任何解释(或参考)。
注意:解决方案资源管理器中从未有任何警告表明 Npgsql 程序集与 .NET 4.6.1 不兼容