gpt4 book ai didi

c# - 尽管拥有正确的 NuGet 包,为什么我仍然需要在计算机上安装 MySQL 连接器?

转载 作者:行者123 更新时间:2023-11-29 15:26:23 25 4
gpt4 key购买 nike

我有一个使用 MariaDB 和 Entity Framework 6 的 C# ASP.NET MVC 项目。

这个项目是在 Visual Studio 2017 中制作的,我花了很长时间仔细检查是否以 NuGet 包的形式添加了正确的 MySQL 连接器的程序集引用 MySql.Data 8.0.13MySql.Data.EntityFramework 8.0.13 (均由 Oracle 官方发布),因为我在调试时浏览 View 时遇到以下错误:

The ADO.NET provider with invariant name 'MySql.Data.MySqlClient' is either not registered in the machine or application config file.

直到我放弃它并尝试安装MySQL Connector/NET 8.0 ,之后就成功了。除 NuGet 执行的更改外,未对 web.config 文件进行任何更改。

我检查了安装程序放置在 %ProgramFiles%\MySql\Connector 下的程序集,它们与 NuGet 拉取的程序集完全相同。哎呀,我什至删除了整个文件夹,但它仍然有效

什么给了? NuGet 包是否缺少应执行的某些步骤?

最佳答案

我怀疑 Connector/NET 8.0 安装程序修改了您的 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config 文件,该文件由所有 .NET 共享机器上的应用程序。不幸的是,这是您计算机上的本地更改,这意味着您的应用程序在部署时可能无法正常工作。

解决方案是将 MySql.Data 添加到您的 app.config (或 Web.config)文件中。我不确定 NuGet 包是否被设计为自动执行此操作。

the Oracle docs ,将此信息添加到app.config:

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

关于c# - 尽管拥有正确的 NuGet 包,为什么我仍然需要在计算机上安装 MySQL 连接器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59053836/

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