在Visual Studio 2010 Professional中找不到所需的.Net Framework数据提供程序

45
在安装Visual Studio 2010 Professional后,设置新的数据源时,出现“无法找到所请求的.NET Framework数据提供程序”的错误提示。我的环境如下:
  • 操作系统:Windows 7 64位,16GB内存
  • 开发工具:Visual Studio 2010 Professional
  • 数据库服务器A:SQL Server 2008,完全管理员权限
  • 数据库服务器B:SQL Server 2008,完全管理员权限
当我尝试添加新的数据源时,在测试ASP.NET应用程序时,遇到了上述问题。尽管我已经安装了.NET 4,但仍然无法成功添加数据源,连接测试也没问题。我已经确认所有凭据,并且SQL Server Management Studio可以正常连接。
9个回答

67

我看到有人报告机器配置文件(machine.config)中有一个额外、自动终止的节点。删除它可以解决他们的问题。machine.config 文件位于 \Windows\Microsoft.net\Framework\vXXXX\Config。根据安装的 .NET Framework 版本的不同,您可能会有多个配置文件,包括 32 位和 64 位变体。

<system.data>
    <DbProviderFactories>
        <add name="Odbc Data Provider" invariant="System.Data.Odbc" ... />
        <add name="OleDb Data Provider" invariant="System.Data.OleDb" ... />
        <add name="OracleClient Data Provider" invariant="System.Data ... />
        <add name="SqlClient Data Provider" invariant="System.Data ... />
        <add name="IBM DB2 for i .NET Provider" invariant="IBM.Data ... />
        <add name="Microsoft SQL Server Compact Data Provider" ... />     
    </DbProviderFactories>

    <DbProviderFactories/>  //remove this one!
</system.data>

4
太好了!!!谢谢!!我之前确实看到过这个,但没有想到要删除那个“remove this one!”的复制内容。另外,我有四个machine.config文件。分别在2版本和4版本中,各有32位和64位的版本。我不得不更改所有四个文件。非常感谢!+100000 - cbmeeks
3
关于我的修复说明 - 尽管我使用的是带有.NET Framework 4的64位计算机 -> 但是在.NET 2下删除了machine.config中的IBM.Data.DB2...引用才能解决SQL Server Mgmt Studio的错误。 - John M
1
我尝试了这个修复方法,现在VS2015在启动画面关闭,任何用.Net4.0编写的应用程序都无法启动。有什么想法吗? - Noobie3001
更新:我无法编辑我的先前评论,但通过从另一台计算机复制这些文件进行修复。我还应指出,在此处找到的Setup_NpgsqlDdexProvider.exe安装程序[链接](https://github.com/npgsql/Npgsql/releases)首先给我带来了麻烦。 - Noobie3001
这个问题是在我安装了Visual Studio 2022之后出现在Visual Studio 2019中的。谢谢。 - undefined

19

我喜欢其他的建议,但我不想为了单个应用程序更新machine.config。 我建议您将其添加到web.config / app.config中。 以下是我需要使用的MySql Connector/NET在“bin”部署中的情况。

<system.data>
    <DbProviderFactories >
        <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.6.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
</system.data>

1
有一些项目类型没有 web.config 文件。 - ajeh
4
值得注意的是,如果机器上安装了不同版本的提供程序,则需要在上述代码片段中添加 <remove invariant="MySql.Data.MySqlClient" /> - Tieson T.

7

谢谢,这对我很有帮助。当我安装.Net Framework 4.7.1时出现了这个问题,一些在machine config下的DbProviderFactories设置被清除了。在添加必要的配置设置后如下所示的DataProviderFactories,它开始正常工作。

<system.data>
    <DbProviderFactories>
      <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
      <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>
</system.data>

4
在我的情况下,尽管我已经正确安装了MySQL连接器,但是在上述的machine.config文件中,MySQL的数据提供程序条目“简单地”丢失了。
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />

别忘了在输入中使用正确的MySQL版本。


在我的情况下,这一行缺失了,重新安装MySQL .Net Connector实际上为我添加了缺失的行... :-). P.s. 我正在使用此链接(无需注册):http://mirrors.dotsrc.org/mysql/Downloads/Connector-Net/ - itsho

2

我曾以为我的问题是由于在线答案中找到的我的machine.config文件引起的,但罪魁祸首实际上在项目的web.config中,它清除了DbProviderFactories。

<system.data>
  <DbProviderFactories>
    <clear />
       ...
  </DbProviderFactories>
</system.data>

尽管这不是我的问题,但它引导我去了<DbProviderFactories>,在那里有人将其设置为删除提供程序。 你能想到吗? 这是一个我必须接手的项目,所以我只能一步步解决问题。 我的web.config文件中有这个:<remove invariant="Oracle.ManagedDataAccess.Client" />。注释掉这个,然后 Bingo,我又可以工作了。 - Caverman

1
我曾经遇到过版本6.7.4的问题,通过安装版本6.5.6解决了这个问题。
我的设置是Win 2008 R2 SP1数据中心版,SQL Server 2008 R2与Business Intelligence Development Studio(VS2008)一起安装。非常基本的安装。
当我安装6.7.4时,甚至看不到MySQL提供程序作为选择项。然而,当我查看machine.config文件时,我看到了对MySQL角色提供程序等的引用,但没有在其中添加条目。

1
这也是我的问题,通过按照这里的说明安装“MySQL for Visual Studio integration”解决了:http://dev.mysql.com/downloads/connector/net/老实说,我不太确定它是什么,但他们已经将其从以前的连接器包中删除了。 - splitfeed

1
我在Visual Studio 2019中遇到了同样的问题,通过在Visual Studio内部的搜索栏中搜索“管理NuGet包”>“oracle.ManagedDataAccess”(第一个结果)并安装它来解决问题。然后应该就可以正常工作了!

0

问题已解决。使用NuGet并搜索“ODP.NET,Managed Driver”invariant =“Oracle.ManagedDataAccess.Client”。

然后安装该软件包。这将为我解决问题。


-1

我点击链接后看到的是:“Internet Explorer于2022年6月15日停用”。那么,你实际上安装了什么? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接