#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 и т. Д.