簡體   English   中英

盡管擁有正確的NuGet軟件包,為什么我仍需要在計算機上安裝MySQL連接器?

[英]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.13MySql.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM