(配置: VS 2015社区,Windows 10 64位,.Net 4.6.1)
我曾经安装过
Npgsql数据提供程序.Net数据提供者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中的提供者声明
添加name="Npgsql数据提供程序“”invariant="Npgsql“support="FF”description=".Net Framework数据提供程序,用于Postgresql“type="Npgsql.NpgsqlFactory,Npgsql
gacutil /l Npgsql微软(注册商标) .NET全局程序集缓存实用程序。版本4.0.30319.0版权(c)微软公司。版权所有。 全局程序集缓存包含以下程序集: 项目数=0
因此,在从Machine.config、App.config和GAC中删除Npgsql提供程序之后,DbProviderFactories.GetFactoryClasses()仍然报告:
Npgsql数据提供程序.Net数据提供者PostgreSQL Npgsql Npgsql.NpgsqlFactory,Npgsql,Version=3.0.7.0,Culture=neutral,PublicKeyToken=5d8b90d52f46fda7
,我还需要做什么才能让DbProviderFactories相信Npgsql不是提供者??
非常感谢你在这方面的帮助。
Edit#1:我永远无法“删除”Npgsql提供程序,但是使用NET4.5.2(而不是ofNET 4.6.1)的目标框架进行重新构建确实解决了许多其他问题。
Edit#2:我需要回到这里,但是有趣的是VisualStudio2015Community有自己的DbProvderFactories配置
C:\程序文件(x86)\Microsoft 14.0\Common7\IDE\devenv.exe.config
发布于 2016-07-31 02:30:38
在一般意义上,我打赌从devenv.exe.config中删除它将完成它的删除。但是,在这个特定的例子中,Npgsql开发团队已经在以下位置安装了一个卸载程序:
C:\Program (X86)\ Npgsql开发团队\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使PetaPoco能够正确地从machine.confg和GAC中找到Npgsql提供程序。
https://stackoverflow.com/questions/38620788
复制相似问题