"Target framework" 如何影响 machine.config 和 GAC 与 Visual Studio 一起使用的方式?
How does the "Target framework" affect the way the machine.config and GAC are used with Visual Studio?
我正在尝试了解项目的 Target 框架的使用方式以及它如何影响加载程序集。这是问题所在。
在Visual Studio2015 Community中,我的默认Target框架是.NET 4.6.1。保留此设置时,我使用 NuGet 安装 Npgsql 3.0.7 作为本地后端 PostgreSQL 数据库的驱动程序。使用
时
DbProviderFactories.GetFactory(ProviderName)
VS 报告找不到提供程序。 (这是在 machine.config 和 GAC 中安装了 Npgsql 3.0.7 之后。)
在研究这个(DbProviderFactories Demystified)时,声明
DbProviderFactories simply invokes Type.GetType to load Assembly and
create an instance of the Type.
这促使我对 Npgsql 3.0.7 进行了更多研究。当 NuGet 安装程序集时,它把它放在
C:...\packages\Npgsql.3.0.7\lib\net45\Npgsql.dll
以"net45"为.NET 4.5,我将项目的Target framework改成了.NET 4.5.2。重建后,一切运行良好,没有警告或错误。
那么 "Target framework" 如何影响 machine.config 和 GAC 的使用方式?
感谢任何解释(或参考)。
注意:解决方案资源管理器中从来没有任何警告表明 Npgsql 程序集与 .NET 4.6.1 不兼容
编译与运行时间执行是分开的。选择目标框架时,Visual Studio/MSBuild 检查目标配置文件中的引用程序集以编译项目。
在 运行 时,首先 Windows 将决定应该使用安装的 .NET Framework。然后由 .NET Framework 版本决定如何 运行 程序及其 GAC 和 machine.config(以及其他位)。
NuGet版本net45表示.NET Framework 4.5及以上。
我正在尝试了解项目的 Target 框架的使用方式以及它如何影响加载程序集。这是问题所在。
在Visual Studio2015 Community中,我的默认Target框架是.NET 4.6.1。保留此设置时,我使用 NuGet 安装 Npgsql 3.0.7 作为本地后端 PostgreSQL 数据库的驱动程序。使用
时DbProviderFactories.GetFactory(ProviderName)
VS 报告找不到提供程序。 (这是在 machine.config 和 GAC 中安装了 Npgsql 3.0.7 之后。)
在研究这个(DbProviderFactories Demystified)时,声明
DbProviderFactories simply invokes Type.GetType to load Assembly and create an instance of the Type.
这促使我对 Npgsql 3.0.7 进行了更多研究。当 NuGet 安装程序集时,它把它放在
C:...\packages\Npgsql.3.0.7\lib\net45\Npgsql.dll
以"net45"为.NET 4.5,我将项目的Target framework改成了.NET 4.5.2。重建后,一切运行良好,没有警告或错误。
那么 "Target framework" 如何影响 machine.config 和 GAC 的使用方式?
感谢任何解释(或参考)。
注意:解决方案资源管理器中从来没有任何警告表明 Npgsql 程序集与 .NET 4.6.1 不兼容
编译与运行时间执行是分开的。选择目标框架时,Visual Studio/MSBuild 检查目标配置文件中的引用程序集以编译项目。
在 运行 时,首先 Windows 将决定应该使用安装的 .NET Framework。然后由 .NET Framework 版本决定如何 运行 程序及其 GAC 和 machine.config(以及其他位)。
NuGet版本net45表示.NET Framework 4.5及以上。