Необходимо обработать набор данных с помощью динамического кода времени выполнения в C#
Я работал с динамическим кодом C# для процессов во время выполнения. Моя проблема в том, что я не могу передать объект набора данных в динамический код без получения:
"Не удалось загрузить файл или сборку" file:///C:\Users\mgallanx\AppData\Local\Temp\npbylo5z.dll'или одну из ее зависимостей. Система не может найти указанный файл."
Вот самая простая строка обработки набора данных, которую я использую:
mycodestring = "using System;
using System.Data;
namespace DaCodeNS
{
public static class DaCode
{
public static DataSet DaMethod( Dataset dsIn)
{
return dsIn;
}
}
}"
вызывающий метод устанавливает параметры для добавления System.dll
а также System.Data.dll
создает Object[] mp
к одному элементу sIn
,
Вызов тогда:
CompilerResults results = provider.CompileAssemblyFromSource (parameters, mycodestring);
var cls = results.CompiledAssembly.GetType ("DaCodeNS.DaCode");
var method = cls.GetMethod ("DaMethod", BindingFlags.Static | BindingFlags.Public);
return (DataSet) method.Invoke (null, mp);
Это ломается в GetMethod
линия. Я могу получить похожий код, передавая целые числа в игру, но меняя возвращаемое значение и передавая DataSet
взрывается. Любая помощь приветствуется.
1 ответ
Скорее всего, вы не включили все ссылки, необходимые для компиляции / запуска вашего динамического кода. Простой способ найти все необходимые ссылки - создать автономный проект, который просто включает в себя код, который вы собираетесь скомпилировать. Затем посмотрите на ссылки, которые вам нужно было добавить в проект, чтобы он скомпилировался / запустился.