Коротко — ошибка означает, что где‑то в приложении (в коде или в конфигурации) запрошен провайдер/сборка System.Data.SqlClient (MS SQL), а у вас используется MySQL. Надо убрать ссылку на SqlClient и подключить/настроить MySQL‑провайдер. Что конкретно делать — шаги ниже.
1) Найдите, кто просит System.Data.SqlClient
- Посмотрите стек ошибки — откуда делается вызов (путь, класс).
- Поиск по проекту: ищите "System.Data.SqlClient", "SqlConnection", "SqlCommand", "providerName=\"System.Data.SqlClient\"" в .cs, .config, .csproj, packages.config, .sln.
- Если не нашли — смотрите зависимости NuGet пакетов: какой‑то пакет может ссылаться на SqlClient.
2) Исправьте код (если вы используете классы ADO.NET)
- Если в коде используются SqlConnection/SqlCommand — они для MS SQL и не работают с MySQL. Замените на MySQL‑классы, например:
- Для Oracle‑поддерживаемого коннектора (MySQL Connector/NET): using MySql.Data.MySqlClient; MySqlConnection, MySqlCommand.
- Или используйте MySqlConnector (рекомендуемый сторонний) — MySqlConnector.MySqlClient.MySqlConnection.
Пример:
using MySql.Data.MySqlClient;
using (var conn = new MySqlConnection(connString)) { conn.Open(); ... }
3) Проверьте connectionString / providerName в конфиге
- В app.config/web.config замените providerName="System.Data.SqlClient" на providerName="MySql.Data.MySqlClient" (или на имя провайдера вашего пакетa).
Пример:
<connectionStrings>
<add name="DefaultConnection" connectionString="Server=localhost;Database=test;Uid=root;Pwd=pass;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
4) Установите нужный MySQL‑провайдер (NuGet)
- MySql.Data (официальный Oracle Connector/NET):
dotnet add package MySql.Data
- Или альтернативный, часто рекомендуемый и быстрее — MySqlConnector:
dotnet add package MySqlConnector
- Для EF6: MySql.Data.Entity (или соответствующий пакет от Oracle)
- Для EF Core: Pomelo.EntityFrameworkCore.MySql или MySql.EntityFrameworkCore (в зависимости от нужной версии)
5) Если используется DbProviderFactories / EF — зарегистрируйте провайдера
- В .NET Framework провайдер можно прописать в machine.config/web.config.
- В .NET Core регистрация фабрики делается в коде:
DbProviderFactories.RegisterFactory("MySql.Data.MySqlClient", MySqlClientFactory.Instance);
- Для Entity Framework 6 добавьте провайдер в секцию entityFramework (если нужно).
6) Когда всё же нужна System.Data.SqlClient
- Если по ошибке всё-таки нужен сам SqlClient (например, сторонняя библиотека требует его), можно установить пакет:
dotnet add package System.Data.SqlClient
или для .NET Core/5+ использовать Microsoft.Data.SqlClient (новый клиент) и/или System.Data.SqlClient пакет (в зависимости от совместимости).
Но в вашем случае это костыль — правильнее перенастроить на MySQL.
7) Диагностика, если ошибка остаётся
- Используйте Fuslogvw (Assembly Binding Log Viewer) или логи runtime для просмотра попыток загрузки сборок.
- Убедитесь, что все сборки и пакеты восстановлены и опубликованы вместе с приложением (особенно при деплое).
- Проверьте target framework: некоторые пакеты несовместимы с .NET Core/.NET 5+ без альтернатив.
Резюме
- Ошибка появляется потому, что где‑то явно запрашивается провайдер для MSSQL. Замените в коде/конфиге этот запрос на MySQL‑провайдер и установите соответствующий NuGet‑пакет (MySql.Data или MySqlConnector). Если нужно — зарегистрируйте провайдера для DbProviderFactories/EF.
Если хотите, пришлите фрагмент стека ошибки и/или содержимое connectionStrings и пример кода, и я подскажу точнее, что нужно изменить.