Целью приложения является проведение статистического анализа данных из таблицы. Точная структура данных / таблицы определяется во время выполнения пользовательским вводом, т.е. количеством и типом столбцов. Я могу динамически создавать таблицу, но у меня проблемы с заполнением данными. Код для заполнения таблицы создается динамически, и его нужно запускать только один раз. Это в основном куча циклов, генерирующих числа. Я могу взять тот же код, который динамически генерируется, и создать с ним класс в существующем проекте - код компилируется и работает просто отлично. Однако при попытке его динамической компиляции я получаю следующую ошибку: Не удалось найти тип или имя пространства имен 'MySql' (отсутствует директива using или ссылка на сборку?) Я попытался добавить 'MySql .Data.MySqlClient.dll ', как параметр CompilerParameter, но безуспешно. Добавление его в основную программу в виде пакета NuGet также не решает проблему. Итак, как добавить 'MySql .Data' в список параметров?
CompilerParameters cp = new CompilerParameters();
cp.GenerateExecutable = true;
cp.OutputAssembly = exeName;
cp.GenerateInMemory = false;
cp.TreatWarningsAsErrors = false;
cp.ReferencedAssemblies.Add("System.Data.dll");
cp.ReferencedAssemblies.Add("MySql.Data.MySqlClient.dll"); //doesn't work!
CompilerResults cr = provider.CompileAssemblyFromFile(cp, inSourceName);
Вот динамически сгенерированный код. Он был сокращен до минимума для целей тестирования. Если я могу получить это для компиляции, остальное должно работать нормально:
string[] programText1 =
{
"using System;",
"using System" + '\u002E' + "Data;",
"using MySql" + '\u002E' + "Data" + '\u002E' + "MySqlClient;",
"namespace Mouse",
"{",
"\tstatic class Program",
"\t{",
"\t\tstatic string masterConnString = \"Server = localhost; User Id = root; Persist Security Info = True; database = testing_database; Password = sql832SQL *#@;\";",
"\t\tstatic MySqlConnection masterConnection = new MySqlConnection(masterConnString);",
"",
"\t\tstatic void Main()",
"\t\t{",
"\t\t\tConsole.WriteLine(\"Hello Cruel World!\");",
"\t\t\tConsole.ReadLine();",
"\t\t}"
};