gpt4 book ai didi

c# - 如何从 DbProviderFactories 中删除提供者?

转载 作者:行者123 更新时间:2023-11-30 12:56:46 26 4
gpt4 key购买 nike

(配置: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().

我现在正在尝试删除它。

  • 我已从项目的 App.config 中删除所有连接字符串和 xml 元素。

  • 来自两者

%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/u npgsql,我从 GAC 中删除了所有 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:我永远无法“删除”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 提供程序。

关于c# - 如何从 DbProviderFactories 中删除提供者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38620788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com