Не удалось заставить MySQL Connector/NET работать в Ubuntu

#c# #mysql #ubuntu #mono

Вопрос:

Общая информация
Работа на игровом сервере, работающем на Ubuntu (20.04.2 LTS). Игра была сделана в Unity3D (C# / Mono). Это не моя игра, но она позволяет пользователям изменять. Игра Valheim, использующая BepInEx для вставки DLL-файлов, написанных на C#.

То, что я пытаюсь сделать
Я пытаюсь создать простой мод, который подключается к базе данных MySQL для хранения данных игроков (игроков, которые подключаются к серверу).

Проблема
После загрузки MySQL Connector/NET (моно-версия) и простого тестирования очень простого кода я продолжаю сталкиваться с ошибкой:

Исключение FileNotFoundException: Не удалось загрузить файл или сборку «System.Data, Версия=4.0.0.0, Культура=нейтральная, PublicKeyToken=b77a5c561934e089» или одну из ее зависимостей.

Что я пытался решить эту проблему
Я погуглил проблему, которая на самом деле не очень помогла. Все, что я мог понять, это то, что, возможно, мне нужно установить Mono на сервер. Так я и сделал sudo apt-get install mono-complete . Но это не имело никакого значения. Ошибка все еще существует. Итак, может ли кто-нибудь пролить свет на эту проблему для меня и как ее решить?

Код, который я использовал для тестирования

 using BepInEx;
using System;
using System.Data;
using MySql.Data.MySqlClient;
using UnityEngine;

namespace MySQLTest
{
    [BepInPlugin(PluginGUID, PluginName, PluginVersion)]
    public class MySQLTest : BaseUnityPlugin
    {
        public const string PluginGUID = "icecub.MySQLTest";
        public const string PluginName = "MySQLTest";
        public const string PluginVersion = "0.0.1";

        private string connectionString =
          "Server=localhost;"  
          "Database=REDACTED;"  
          "User ID=REDACTED;"  
          "Password=REDACTED;"  
          "Pooling=false";

        private void Awake()
        {

            IDbConnection dbcon = new MySqlConnection(connectionString);
            dbcon.Open();
            IDbCommand dbcmd = dbcon.CreateCommand();

            string sql = "SELECT username FROM users";
            dbcmd.CommandText = sql;
            IDataReader reader = dbcmd.ExecuteReader();
            while (reader.Read())
            {
                string userName = (string)reader["username"];
                Debug.LogWarning($"Got the following data from the MySQL database: {userName}");
            }
            // clean up
            reader.Close();
            reader = null;
            dbcmd.Dispose();
            dbcmd = null;
            dbcon.Close();
            dbcon = null;
        }
    }
}
 

Обновить
Также установлен Microsoft.NETCore.App 5.0.8, но все та же проблема.

Комментарии:

1. Какая версия находится в вашем файле .csproj? Попробуйте сделать dotnet clean amp; dotnet restore и повторите попытку

2. Попробуйте удалить MySQL. Данные и переключение на nuget.org/packages/MySqlConnector вместо этого; он имеет гораздо лучшую поддержку Mono, Xamarin и т. Д.