(配置:VS 2015 社区,Windows 10 64bit,.Net 4.6.1)
有一次我安装了
用于 PostgreSQL 的 Npgsql 数据提供程序 Npgsql Npgsql.NpgsqlFactory,Npgsql,版本=3.0.7.0,Culture=neutral,PublicKeyToken=5d8b90d52f46fda7 的 Npgsql 数据提供程序
被使用
DbProviderFactories.GetFactoryClasses()。
我现在正在尝试删除它。
我已经从项目的 App.config 中删除了所有连接字符串和 xml 元素。
从两者
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\CONFIG\machine.config
和
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\CONFIG\machine.config
我删除了 DbProviderFactories 中的提供者声明
添加 name="Npgsql 数据提供程序" 不变="Npgsql" support="FF" 描述=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql"
- 使用 gacutil /u npgsql,我从 GAC 中删除了所有 npgsql 引用:
gacutil /l Npgsql Microsoft (R) .NET 全局程序集缓存实用程序。版本 4.0.30319.0 版权所有 (c) Microsoft Corporation。版权所有。
全局程序集缓存包含以下程序集:
项目数 = 0
因此,从 machine.config、App.config 和 GAC 中删除 Npgsql 提供程序后,DbProviderFactories.GetFactoryClasses() 仍然报告:
用于 PostgreSQL 的 Npgsql 数据提供程序 Npgsql Npgsql.NpgsqlFactory,Npgsql,版本=3.0.7.0,Culture=neutral,PublicKeyToken=5d8b90d52f46fda7 的 Npgsql 数据提供程序
我还需要做什么来说服 DbProviderFactories Npgsql 不是提供者?
非常感谢您对此的任何帮助。
编辑#1:我永远无法“删除” Npgsql 提供程序,但使用 NET 4.5.2(而不是 NET 4.6.1)的目标框架重新构建确实解决了许多其他问题。
编辑#2:我需要回到这一点,但有趣的是 Visual Studio 2015 社区在 DbProvderFactories 上有自己的配置
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe.config