(配置:VS 2015社区,Windows 10 64位,.Net 4.6.1)
我安装了一次
使用PostgreSQL的Npgsql数据提供程序.Net数据提供程序Npgsql Npgsql.NpgsqlFactory,Npgsql,Version = 3.0.7.0,Culture = neutral,PublicKeyToken = 5d8b90d52f46fda7
DbProviderFactories.GetFactoryClasses()。
我正在尝试删除它。
我已从项目的App.config中删除了所有连接字符串和xml元素。
来自
%SYSTEMROOT%\ Microsoft.NET \框架\ v4.0.30319 \ CONFIG \ machine.config中
和
%SYSTEMROOT%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ CONFIG \ machine.config中
我删除了DbProviderFactories中的提供者声明
添加name =" Npgsql Data Provider"不变="&Npgsql的#34;支撑=" FF" description =" .Net框架数据提供程序用于Postgresql Server" type =" Npgsql.NpgsqlFactory,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数据提供程序.Net数据提供程序Npgsql Npgsql.NpgsqlFactory,Npgsql,Version = 3.0.7.0,Culture = neutral,PublicKeyToken = 5d8b90d52f46fda7
我还需要做些什么才能说服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
答案 0 :(得分:0)
在一般意义上,我打赌从devenv.exe.config中删除它将完成删除。但是,在这种特定情况下,事实证明Npgsql开发团队已在以下位置安装了卸载程序:
C:\ Program Files(x86)\ Npgsql Development Team \ Npgsql
标记为uninstall.exe。
(我无法找到相关信息)。
延迟更新 在使用PetaPoco时,无法找到Npgsql提供程序,因为它被添加到GAC和machine.config文件中。查看devenv.exe.config,发现:
public interface CategoryRepository extends Repository<Category, Long> {
public Category findById(Long id) throws DataAccessException;
public Category save(Category category) throws DataAccessException;
}
指的是错误的Npgsql版本。从devenv.exe.config文件中删除它并重新启动Visual Studio允许PetaPoco从machine.confg和GAC中正确地找到Npgsql提供程序。