如何从 DbProviderFactories 中删除提供者?

How to remove a provider from DbProviderFactories?

(配置:VS 2015社区,Windows 10 64位,.Net 4.6.1)

有一次我安装了

Npgsql Data Provider .Net Data Provider for PostgreSQL Npgsql Npgsql.NpgsqlFactory, Npgsql, Version=3.0.7.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7

使用

DbProviderFactories.GetFactoryClasses().

我正在尝试删除它。

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\CONFIG\machine.config

%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\CONFIG\machine.config

我删除了 DbProviderFactories 中的提供者声明

add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql"

gacutil /l Npgsql Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.0 Copyright (c) Microsoft Corporation. All rights reserved.

The Global Assembly Cache contains the following assemblies:

Number of items = 0

因此,从 machine.config、App.config 和 GAC 中删除 Npgsql 提供程序后,DbProviderFactories.GetFactoryClasses() 仍然报告:

Npgsql Data Provider .Net Data Provider for PostgreSQL Npgsql Npgsql.NpgsqlFactory, Npgsql, Version=3.0.7.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7

我还需要做什么才能让 DbProviderFactories 相信 Npgsql 不是提供程序?

非常感谢您对此的任何帮助。

编辑#1:我从来没有 "remove" 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

在一般意义上,我敢打赌从 devenv.exe.config 中删除它会完成删除。但是,在这种特定情况下,事实证明 Npgsql 开发团队已经在以下位置安装了卸载程序:

C:\Program Files (x86)\The Npgsql Development Team\Npgsql

已标记,uninstall.exe。

(我找不到这方面的信息)。

晚更新 在使用 PetaPoco 时,无法找到 Npgsql 提供程序,尽管它被添加到 GAC 和 machine.config 文件中。查看 devenv.exe.config,发现:

<remove invariant="Npgsql" />
  <add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Version=3.0.7.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />

指的是错误的 Npgsql 版本。从 devenv.exe.config 文件中删除它并重新启动 Visual Studio 允许 PetaPoco 从 machine.confg 和 GAC 中正确找到 Npgsql 提供程序。