Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MySQL在Visual Studio 2017上未注册类错误_Mysql_Vb.net_Visual Studio_Visual Studio 2017_Mysql Connector - Fatal编程技术网

使用MySQL在Visual Studio 2017上未注册类错误

使用MySQL在Visual Studio 2017上未注册类错误,mysql,vb.net,visual-studio,visual-studio-2017,mysql-connector,Mysql,Vb.net,Visual Studio,Visual Studio 2017,Mysql Connector,我正在将我的独立VB.NET开发的Windows窗体应用程序从SQL迁移到MySQL,同时使用在线数据库。下面是一个场景 该应用程序是在Visual Studio 2017 VB.NET中开发的,是一个Windows窗体应用程序 我的数据库托管在Hostinger上 显然,如果我想从VS连接到MySQL,我需要两个组件 用于VisualStudio的MySQL VisualStudioMySQL连接器 问题开始了,我尝试了这两个组件的不同版本,但仍然出现以下错误 现在,根据在线论坛和此处回答的

我正在将我的独立VB.NET开发的Windows窗体应用程序从SQL迁移到MySQL,同时使用在线数据库。下面是一个场景

  • 该应用程序是在Visual Studio 2017 VB.NET中开发的,是一个Windows窗体应用程序
  • 我的数据库托管在Hostinger上
  • 显然,如果我想从VS连接到MySQL,我需要两个组件

  • 用于VisualStudio的MySQL

  • VisualStudioMySQL连接器

  • 问题开始了,我尝试了这两个组件的不同版本,但仍然出现以下错误

    现在,根据在线论坛和此处回答的问题,当计算机上未安装软件组件时,会发生此错误。在本例中,我使用的是MySQL引用,但未安装MySQL连接器或MySQL for VS。但事实并非如此。我已经安装了这两个

    我试图手动更新MySQL.Data.DLL(v4.0和v4.5)的diff版本,但似乎没有解决问题

    我尝试了与VS 2015社区相同的项目,但仍然不起作用

    阅读不同的论坛并尝试多种解决方案。在这里发帖是我最后的选择

    我认为,要使其工作,必须安装两个支持软件的特定版本。如果有人曾经尝试过这个,正在做这个或者有任何解决方法,请告诉我

    只是因为,问题标题有点常见,并且在多篇文章中多次提到,所以在没有合适的解决方案的情况下,不要重复它

    其他问题:MySQL未显示在服务器资源管理器的服务器中 列表这是可选的

    更新:

    安装适用于VS 1.2.7的MySQL和MySQL Connector 6.10.5将启用服务器资源管理器服务器列表中的选项。现在,我可以使用这个创建新的MySQL连接。我已经成功地创建了一个远程MySQL连接并对其进行了测试,但在尝试运行该项目时仍然存在上述错误


    如果您的应用程序不在Framework4.6或更高版本上,您将需要一个遗留的MySql连接器。要使用最新版本的连接器,请删除所有引用和导入,关闭Visual studio,卸载当前连接器,以及MySQL for Visual studio并安装最新版本的连接器。不要安装MySQL for Visual Studio,除非您正在通过设计器构建应用程序,否则您不需要它。将框架更改为4.6+,并将对的引用添加到MySql.Data并导入名称空间。如果这不能解决问题,我将删除此答案。

    如果您的应用程序不在Framework 4.6或更高版本上,您将需要一个旧版MySql连接器。要使用最新版本的连接器,请删除所有引用和导入,关闭Visual studio,卸载当前连接器,以及MySQL for Visual studio并安装最新版本的连接器。不要安装MySQL for Visual Studio,除非您正在通过设计器构建应用程序,否则您不需要它。将框架更改为4.6+,并将对的引用添加到MySql.Data并导入名称空间。如果这不能解决问题,我将删除此答案。

    这看起来像是COM错误。这些都是调试的乐趣。显然,MySQL.net提供商在幕后使用COM,也许是为了与本机代码对话

    我没有解决方案,我在.net上没有MySQL的经验,我对VB深恶痛绝。所以,我可能不是你的救世主,但这里有一些提示和建议,可能有助于跟踪COM错误。这是最后的手段

  • 从Microsoft下载并安装。Process Monitor允许您窥探文件和注册表访问。DbgView从
    OutputDebugString
    捕获日志消息。如果幸运的话,MySQL本机代码可能会发出调试字符串
  • 创建一个简单的、基本的控制台模式应用程序来解决问题。
    • 主方法启动后立即打印启动消息。在消息中包含
      Environment.Is64BitProcess
      的值(将在下面解释原因)
    • 等待用户通过
      Console.ReadKey()
      按键。这是给您时间来设置过程监视器
    • 按键后尝试连接到MySQL。用丰富的日志记录围绕每个语句
    • 如果您在64位计算机上,请将Visual Studio配置为仅以x64代码为目标
  • 启动调试视图
  • 在调试器之外运行你的应用程序(但要坚持调试版本)
  • 当它等待按键时,启动Process Monitor并告诉它仅记录来自应用程序的事件
  • 按下测试应用程序中的一个键,看看它是否会像winforms应用程序那样爆炸
  • 假设它崩溃了,请查看Process Monitor以查看崩溃时发生了什么。可能会有堆积如山的垃圾。您必须向下筛选注册表和文件访问权限。关注失败的操作。Procmon将允许您查看访问的文件名和注册表项
  • 查看DebugView中的日志记录,看看是否出现了任何有趣的东西
  • 好的,那么为什么要强制64位和日志证明您在运行时处于64位模式呢?64位windows计算机同时具有64位注册表和32位注册表。COM库可以在其中一个中注册,而不能在另一个中注册。你想从方程中消除头痛。
    任何CPU
    目标与
    首选32位
    VS设置相结合只会让一切更加混乱。在调试时,最好确定运行的CPU目标

    另一个技巧是在调试器中运行,并在出现错误对话框时强制它全部中断。我不知道当控制台模式应用程序失败时,是否会出现错误框,但如果出现,调用堆栈可能会帮助您找到正确的方向

    最后一个提示:为nativ配置VS