![](/img/trans.png)
[英]Why do I need to use nuget to add ASP.NET Core packages into my project if I already have the SDK installed?
[英]Why do I still need the MySQL Connector installed on the computer despite having the proper NuGet packages?
我有一个使用MariaDB和Entity Framework 6的C#ASP.NET MVC项目。
这个项目是在Visual Studio 2017中完成的,我花了很长时间仔细检查我是否以NuGet包MySql.Data 8.0.13和MySql.Data.EntityFramework的形式适当添加了正确的MySQL连接器的程序集引用。 8.0.13 (均为oficially由Oracle出版),因为我在浏览美景,一边调试时收到以下错误:
具有不变名称'MySql.Data.MySqlClient'的ADO.NET提供程序未在计算机或应用程序配置文件中注册。
直到我放弃了它,并试图安装的MySQL连接器/ 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软件包是否旨在自动执行此操作。
根据Oracle文档 ,将此信息添加到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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.